我可以使用会话查询多个属性吗?查询

本文关键字:查询 属性 会话 我可以 可以使 | 更新日期: 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();