我可以使用会话查询多个属性吗?查询
本文关键字:查询 属性 会话 我可以 可以使 | 更新日期: 2023-09-27 17:55:41
我想查询"用户"实体的另一个属性。基本上我需要知道,是否可以扩展以下语句以包含这样的东西。
user = session.Query<User>().SingleOrDefault(u => u.Username.ToLower() == identity.ToLower()) && (u => u.Email == email);
我知道这是不正确的,但你明白了,我想检查用户的电子邮件以及用户名。
这是当前的代码。
public static bool IsDuplicateIdentity(string identity, string email, Type type)
{
using(ISession session = NHibernateHelper.SessionFactory().OpenSession())
using (ITransaction tx = session.BeginTransaction())
{
User user = null;
// the entity type is checked and then DB is queried to see if an object with that name and email exists
if (type.BaseType == typeof(User))
{
user = session.Query<User>().SingleOrDefault(u => u.Username.ToLower() == identity.ToLower());
}
tx.Commit();
if (user != null)
{
return true;
}
else
{
return false;
}
}
}
请注意,这是一个 ASP.net MVC 3应用程序。
你不能这样做吗?
user = session.Query<User>()
.SingleOrDefault(u =>
u.Username.ToLower() == identity.ToLower()
&& u.Email == email);
当然:
user = session.Query<User>()
.SingleOrDefault(u => u.Username.ToLower() == identity.ToLower()
&& u.Email == email);
是的,你可以把它们结合起来,你几乎做对了。像这样尝试:
user = session.Query<User>().SingleOrDefault(u => u.Username.ToLower() == identity.ToLower() && u.Email == email);
你可以编写下面的代码
user = session.Query<User>()
.where(u => u.Username.ToLower() == identity.ToLower() && u.Email == email).SingleOrDefault();