Entity framework 实体框架4,自跟踪实体T4模板,ApplyChanges()扩展方法
我正在使用EF4和内置的自跟踪实体模板从模型生成实体。我还修改了T4模板,以便将对“ObjectContext”的所有引用都更改为“IOObjectContext”,并将一个接口应用于自动生成的上下文(所有这些都是为了测试和模拟目的)Entity framework 实体框架4,自跟踪实体T4模板,ApplyChanges()扩展方法,entity-framework,t4,Entity Framework,T4,我正在使用EF4和内置的自跟踪实体模板从模型生成实体。我还修改了T4模板,以便将对“ObjectContext”的所有引用都更改为“IOObjectContext”,并将一个接口应用于自动生成的上下文(所有这些都是为了测试和模拟目的) //我的接口 公共接口IDatabaseEntities { IObjectSet客户{get;} int SaveChanges(); } //自我跟踪实体自动生成代码,带我的mods 公共部分类数据库实体:ObjectContenxt、IDatabaseEnt
//我的接口
公共接口IDatabaseEntities
{
IObjectSet客户{get;}
int SaveChanges();
}
//自我跟踪实体自动生成代码,带我的mods
公共部分类数据库实体:ObjectContenxt、IDatabaseEntities
{
//这里是自动发电机
公共IObjectSet客户
//更多汽车发电机的东西
}
在T4模板中,它们生成一个扩展方法ApplyChanges(),该方法仅适用于“ObjectSet”类型的对象。所以我不能调用“_context.Customers.ApplyChanges(customer);”,因为我使用的是“ioobjectset”类型。我真的需要调用这个方法来更新分离的实体!!!因此,现在我无法确定如何更新实体,因为我没有使用具体的ObjectSet类。下面这样的扩展方法如何:
public static class EntityFrameworkExtensions
{
public static void ApplyChanges<TEntity>(this IObjectSet<TEntity> objectSet, TEntity entity)
where TEntity : class
{
if (objectSet is ObjectSet<TEntity>)
{
((ObjectSet<TEntity>)objectSet).ApplyChanges(entity);
}
}
}
公共静态类EntityFrameworkExtensions
{
公共静态void ApplyChanges(此IOObjectSet对象集,TEntity实体)
地点:班级
{
if(objectSet是objectSet)
{
((ObjectSet)ObjectSet.ApplyChanges(实体);
}
}
}
像下面这样的扩展方法如何:
public static class EntityFrameworkExtensions
{
public static void ApplyChanges<TEntity>(this IObjectSet<TEntity> objectSet, TEntity entity)
where TEntity : class
{
if (objectSet is ObjectSet<TEntity>)
{
((ObjectSet<TEntity>)objectSet).ApplyChanges(entity);
}
}
}
公共静态类EntityFrameworkExtensions
{
公共静态void ApplyChanges(此IOObjectSet对象集,TEntity实体)
地点:班级
{
if(objectSet是objectSet)
{
((ObjectSet)ObjectSet.ApplyChanges(实体);
}
}
}