html5获取域对象,entity-framework – EF5如何获取域对象的导航属性列表
我使用EF6編寫了以下內容,但我相信它與EF5完全兼容.代碼背后的一般思想是使用
a System.Data.Metadata.Edm中的優秀類來獲取導航屬性并對這些屬性名稱使用反射來獲取對象的真實屬性以進行更新.
我想讓我的例子盡可能通用但完整.在提問者的情況下,他顯然會用“_uow.Context”替換“context”.
public class MyClass where T : class //T really needs to always be an entity,
//but I don't know a general parent type
//for that. You could leverage partial classes
//to define your own type.
{
public MyEntities context { get; set; }
public void UpdateValues(T originalEntity, T modifiedEntity)
{
//Set non-nav props
context.Entry(originalEntity).CurrentValues.SetValues(modifiedEntity);
//Set nav props
var navProps = GetNavigationProperties(originalEntity);
foreach (var navProp in navProps)
{
//Set originalEntity prop value to modifiedEntity value
navProp.SetValue(originalEntity, navProp.GetValue(modifiedEntity));
}
}
public List GetNavigationProperties(T entity)
{
List properties = new List();
//Get the entity type
Type entityType = entity.GetType();
//Get the System.Data.Entity.Core.Metadata.Edm.EntityType
//associated with the entity.
var entitySetElementType = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)context).ObjectContext.CreateObjectSet().EntitySet.ElementType;
//Iterate each
//System.Data.Entity.Core.Metadata.Edm.NavigationProperty
//in EntityType.NavigationProperties, get the actual property
//using the entityType name, and add it to the return set.
foreach (var navigationProperty in entitySetElementType.NavigationProperties)
{
properties.Add(entityType.GetProperty(navigationProperty.Name));
}
return properties;
}
}
總結
以上是生活随笔為你收集整理的html5获取域对象,entity-framework – EF5如何获取域对象的导航属性列表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李楠谈ChatGPT:看似全知,其实有些
- 下一篇: 淘宝运费险怎么退 淘宝运费险的退款流程