Linq到实体错误无法创建常量值

时间:2013-01-26 12:09:38

标签: entity-framework

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

    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的新手。

3 个答案:

答案 0 :(得分:1)

您可以使用Any扩展名方法:

public static bool UserExistChk(String StrUserId)
{
  using ( SBVEntities db = new SBVEntities() )
  {
    return db.Users.Any( o => o.UserID == StrUserId );
  }
}

答案 1 :(得分:0)

它应该是这样的。

           using (SBVEntities dbcontx = new SBVEntities())
           {
              return (dbcontx.Users
                             .FirstOrDefault(e => e.UserID == StrUserId) != null 
                             ? true : false); 
           }

答案 2 :(得分: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
}