0

我有一个函数,我向其传递一个字符串,然后使用 linq to entity 检查我传递的字符串值是否已存在于数据库中。为此,我编写了这个函数。

    public static bool UserExistChk(String StrUserId) {
            using (SBVEntities dbcontx = new SBVEntities())
           {
                return dbcontx.Users.Contains(dbcontx.Users.FirstOrDefault(e => e.UserID == StrUserId));

           }
    }

但我收到错误 - 无法创建类型为“MySBVApp.Models.User”的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)。

请帮助我是实体框架和 linq 的新手。

4

3 回答 3

1

您可以Any为此使用扩展方法:

public static bool UserExistChk(String StrUserId)
{
  using ( SBVEntities db = new SBVEntities() )
  {
    return db.Users.Any( o => o.UserID == StrUserId );
  }
}
于 2013-01-26T12:52:45.340 回答
0

它应该是这样的。

           using (SBVEntities dbcontx = new SBVEntities())
           {
              return (dbcontx.Users
                             .FirstOrDefault(e => e.UserID == StrUserId) != null 
                             ? true : false); 
           }
于 2013-01-26T12:21:04.247 回答
0

你可以使用:

public static bool UserExistChk(String StrUserId) 
{
    using (SBVEntities dbcontx = new SBVEntities())
    {
        var query = from u in dbcontx.Users
                    where u.UserId.Contains(strUserId)
                    select u;
    }
    Return query.Count > 0
}
于 2013-01-26T12:46:32.363 回答