Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架4,自跟踪实体T4模板,ApplyChanges()扩展方法_Entity Framework_T4 - Fatal编程技术网

Entity framework 实体框架4,自跟踪实体T4模板,ApplyChanges()扩展方法

Entity framework 实体框架4,自跟踪实体T4模板,ApplyChanges()扩展方法,entity-framework,t4,Entity Framework,T4,我正在使用EF4和内置的自跟踪实体模板从模型生成实体。我还修改了T4模板,以便将对“ObjectContext”的所有引用都更改为“IOObjectContext”,并将一个接口应用于自动生成的上下文(所有这些都是为了测试和模拟目的) //我的接口 公共接口IDatabaseEntities { IObjectSet客户{get;} int SaveChanges(); } //自我跟踪实体自动生成代码,带我的mods 公共部分类数据库实体:ObjectContenxt、IDatabaseEnt

我正在使用EF4和内置的自跟踪实体模板从模型生成实体。我还修改了T4模板,以便将对“ObjectContext”的所有引用都更改为“IOObjectContext”,并将一个接口应用于自动生成的上下文(所有这些都是为了测试和模拟目的)

//我的接口
公共接口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(实体);
}
}
}