gpt4 book ai didi

c# - EF 中的 ObjectMaterialize 未在第一级查询上触发

转载 作者:行者123 更新时间:2023-11-30 19:39:02 25 4
gpt4 key购买 nike

我有一个查询,例如:

Query Syntax 1 - Does not fire the somehandler;
var results = (from I in db.mytable
select new myObject() {
column1 = i.Prop1
}).ToList();

Query Syntax 2 - Does fires the somehandler event;
var results = (from I in db.mytable
select I).toList();

在我的 ContextClass 中我有这样的东西:

((IOjectContextAdapter)this).ObjectContext.ObjectMaterialized +=  somehandler;

我看到的唯一区别是第一个查询根据选择的结果构建了一个新对象。

知道为什么事件不会触发吗?

最佳答案

事件仅针对实体对象投影触发,这就是您看到此行为的原因。

"If the query used a projection and there is no matching entity, the results are materialized into DbDataRecords (or anonymous types when a LINQ to Entities query was used) instead of entity objects," Ref -Programming Entity Framework (Julia Lerman)P-244)

ObjectMarialized 状态的定义

Occurs when a new entity object is created from data in the data source as part of a query or load operation.

引用。 https://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.objectmaterialized(v=vs.110).aspx

由于投影不创建实体对象,因此不会触发事件。

关于c# - EF 中的 ObjectMaterialize 未在第一级查询上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29778021/

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