gpt4 book ai didi

c# - Entity Framework `AsNoTracking` 不适用于匿名投影

转载 作者:太空狗 更新时间:2023-10-29 19:45:07 25 4
gpt4 key购买 nike

在下面的片段中,我尝试使用 Anonymous Projection 获取数据,我不想跟踪获取的 entities

注意:我已经解决了现有的堆栈问题,但无法为我找到有效的解决方案

using (var db = new Entities())
{
db.Configuration.LazyLoadingEnabled = false;
db.Configuration.ProxyCreationEnabled = false;

var myprojection = db.Table1
.AsNoTracking()
.Include(gh=>gh.Table2) //Update
.Include(gh=>gh.Table3) //Update
.Select(x => new
{
table1= x,
table2= x.Table2.Where(g => Some Condition),

table3= x.Table3.Where(g=>Some Condition)
})
.ToList();

var result = myprojection.Select(g =>g.table1).FirstOrDefault();

}

When i useAsNoTracking() data from the inner tables (table2,3) is lost during the conversion at this line var result = myprojection.Select(g =>g.table1).FirstOrDefault();

编辑

If i remove AsNoTracking() everything works fine.

1) 如何在 Entity Framework 中正确使用projectionAsNoTracking

2) 是否还有其他选项可以删除对此查询的跟踪?

是否有任何可能的解决方法?

最佳答案

ToList() 用于您的导航属性。请注意,它仍会转换到数据库中。 (EF6)

// ..
table2 = x.Table2.Where(g => Some Condition).ToList(),

更新:

对于 EF4,您可能需要手动映射 table2:

 table2 = x.Table2.Where(g => CONDITION).Select(x => new {Foo = x.Bar}),

关于c# - Entity Framework `AsNoTracking` 不适用于匿名投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35271196/

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