我有一个EF代码第一个实体,并希望在其上创建一个计算列。我需要首先完成所有现有的db-loaded值,所以我不能通过属性集调用来解决这个问题。是否存在事件或某种方式,对象可以知道它已完成从db中加载所有数据,因此可以执行计算?
答案 0 :(得分:0)
您应该查看LazyLoading,它将确定何时以及如何实际检索数据。默认情况下,首次调用时会加载数据。这意味着你要做这样的事情。
var result = DB.where(x+> x.id == 1);
结果字段将在您调用它们时加载:
var test = result.1stField; //1st field values will actually be loaded as this call is made.
然而,你可以设置它,以便在你第一次调用时立即加载所有数据,这应该阻止执行直到加载所有值,这将为你提供执行计算所需的时间。
答案 1 :(得分:0)
我认为ObjectMaterialized事件正是您所寻找的:
http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.objectmaterialized.aspx