gpt4 book ai didi

c# - 在 nHibernate QueryOver 期间无法比较字符串

转载 作者:太空狗 更新时间:2023-10-29 21:36:06 27 4
gpt4 key购买 nike

我有一个简单的方法来尝试在用户登录时验证用户,我使用 Fluent nHibernate为了持久性,所以我很自然地实现了一个 ISession.QueryOver<T>做这项工作。

看起来像下面这样。

var member = session.QueryOver<Member>()
.Where(m => m.Email == Model.Email)
.Take(1).SingleOrDefault();

好的。那么,手头的问题。

  1. 电子邮件地址始终需要进行比较,不区分大小写。

它们应该在数据库中始终是小写的。为了实现这一目标,我付出了巨大的努力。事实上,我的 <input>接受 Email Address有一个验证规则只允许小写字母。但这还不够好,我想让它更深入,并绝对确保一切都是 Kosher。

所以我尝试这样做...

var member = session.QueryOver<Member>()
.Where(m => String.Compare
(m.Email, Model.Email, StringComparison.OrdinalIgnoreCase) == 0)
.Take(1).SingleOrDefault();

我得到一个异常,nhibernate 不能使用 String.Compare方法。

我意识到我可以用简单的 ToLower() 来解决这个问题方法,但在某些情况下,我可能想要比其他类型的比较更精细一些。

谁能帮我弄清楚如何解决这个问题?

最佳答案

有多种方法可以做到这一点,使用 IsInsensitiveLike:

   var member= Session.QueryOver<Member>()
.WhereRestrictionOn(m=>m.Email).IsInsensitiveLike(Model.Email)
.Take(1).SingleOrDefault();

关于c# - 在 nHibernate QueryOver<T> 期间无法比较字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6719533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com