Jat*_*ing 19 entity entity-framework-4
在EF 4.0中,如果我理解正确,实体中有两种类型的值:当前值和原始值.
我们可以通过调用ApplyOriginalValues(TEntity)方法设置原始值但是如何获取原始值?
Leo*_*lva 31
对于EF 5,@ Eranga答案已经过时.出于某种原因,当使用如下语句获取原始值时,EF 5无法正常工作:
var originalValues = context.Entry(myEntity).OriginalValues;
Run Code Online (Sandbox Code Playgroud)
我的工作解决方案使用AsNoTracking()
方法DbSet
,如下例所示:
var originalEntity = context.MyEntities.AsNoTracking().FirstOrDefault(me => me.MyEntityID == myEntity.MyEntityID);
Run Code Online (Sandbox Code Playgroud)
Era*_*nga 14
您可以通过ObjectStateEntry访问它们
var originalValues = context
.ObjectStateManager.GetObjectStateEntry(myEntity).OriginalValues;
Run Code Online (Sandbox Code Playgroud)
小智 6
这可以进一步细化到以下内容:
var originalEntity = context.MyEntities.AsNoTracking()
.FirstOrDefault(me => me.MyEntityID == myEntity.MyEntityID);
Run Code Online (Sandbox Code Playgroud)
在Where
上面,好,响应不需要.
小智 5
var originalEntity = (EntityType)context.Entry(editEntity).OriginalValues.ToObject();
Run Code Online (Sandbox Code Playgroud)
对不起我的英语不好。通过这种方式,您可以在不更改编辑值的情况下以对象实体的形式获取原始实体值。
示例:如果你喜欢编辑一个人,顶部的行看起来像这样
var originalPerson = (Person)context.Entry(editPerson).OriginalValues.ToObject();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23559 次 |
最近记录: |