gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:46:30 25 4
gpt4 key购买 nike

当使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com