使用 LINQ 预加载完整的表

2024-04-25

我需要 LINQ 来获取整个表,但这似乎不起作用...每次我通过 pkey 选择值时,都会再次触发选择..

所以,实际上这段代码:

        DataContext dc = new DataContext();

        dc.Stores.ToList();

        Store st = dc.Stores.SingleOrDefault(p => p.Id == 124671);

正在制作一个

select * from store 

在“ToList()”方法和一个附加

select * from store where id = 124671

在它下面的选择部分...

当然,我想阻止它进行第二次选择..

我该怎么做呢? (我不想将 ToList() 结果存储在 List 等附加属性中)

UPDATE:

关于您的答案,这意味着:

Store st = stores.SingleOrDefault(p => p.Id == 124671);
Store st = stores.SingleOrDefault(p => p.Id == 124671);

会触发对数据库的 2 个选择,这将使 LINQ-idea 毫无用处?!或者我在这里犯了什么错?

我认为 LINQ 基本上会保存我在选择中获取的所有数据,并且仅在“缓存”中找不到数据时才执行另一个请求。所以,我认为它就像我的应用程序和应用程序之间的某种“神奇”存储层数据库..

更新#2

只是你明白了......我想在开始时失去性能(当抓取所有数据时)并在我从“缓存”数据中选择时赢回它......


试试这个:

DataContext dc = new DataContext();

var allStores = dc.Stores.ToList();

Store st = allStores.SingleOrDefault(p => p.Id == 124671);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 LINQ 预加载完整的表 的相关文章

随机推荐