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

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

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

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>();
            }
        }

最佳答案

它会完成这项工作。请注意,您过于具体会让自己的生活变得艰难 - 您可以这样做:

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

但这在操作上没有任何不同。

想法:

  • 你不应该期望这里有零个或一个匹配项吗?不是多个? (FirstOrDefault/SingleOrDefault)
  • 我怎么说这个.. 停止存储密码。不完全是;停下来。仅加盐哈希。

有关返回 IQueryable 时它不起作用的原因是 查询 是“延迟的”——它还没有被执行。如果您在迭代查询(foreach、ToList 等)之前处理数据上下文(“使用”),则查询无法工作。这就像从水龙头上取下软管,然后走到“业务端”,打开喷嘴,想知道为什么没有水。

关于c# - 从数据库 LinqToSql 访问值的任何更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16748055/

相关文章:

javascript - CORS 策略 : No 'Access-Control-Allow-Origin' 已阻止从源 *** 访问 ***

javascript - 刷新后,JS 脚本在部分 View 中不起作用

.net - LINQ 实体作为业务对象 - 优点/缺点

asp.net - DropDownList selectedvalue 和表

c# - 比较linq中的日期

c# - ASP.Net Core 单元测试异步 Controller

c# - 从抽象类型对象数组访问特定子类的对象

c# - 移动刚体游戏对象的正确方法

c# - 如何使用 C# 在 Selenium 中单击超链接

asp.net - 如何提高 .net wcf 服务的性能