从数据库-LinqToSql访问值的任何更好的方法

时间:2013-05-25 09:10:35

标签: c# asp.net linq linq-to-sql

这是使用Ling to SQL时访问值的正确方法。我尝试返回IQueryable,但收到错误,指出“在Dispose后访问DataContext”。然后将它转换成一个列表。可以告诉我一些是否正常或建议我一些其他你认为会更有效的答案。我可以在将要获取数据的所有其他函数中使用相同的实现吗?请帮忙。

public List<SS_User> Login(string UserName,String Password)
        {


            using (DbContext = new DALDataContext())
            {
                IQueryable<SS_User> User = (from Users in DbContext.SS_Users
                                            where (Users.UserName == UserName && Users.Password == Password)
                                            select Users);

                return User.ToList<SS_User>();
            }
        }

1 个答案:

答案 0 :(得分:4)

它会完成这项工作。请注意,你过度具体是为了自己的生活 - 你可以这样做:

return (from user in dB.Users
             where {your test}
             select user).ToList();

但这不是操作任何不同。

思想:

  • 你不应该期待零或一场比赛吗?不是多个? (FirstOrDefault / SingleOrDefault)
  • 我该怎么说.. 停止存储密码 。不完全是;停下来。仅盐渍哈希。

有关返回IQueryable时无效的原因是查询是“延期” - 它尚未执行。如果在迭代查询(foreach,ToList等)之前处置数据上下文(“using”),则查询无法工作。这就像从水龙头上取下软管,然后走到“商业端”,打开喷嘴,想知道为什么没有水。