动态创建实体实例并添加新条目

时间:2017-07-19 06:09:36

标签: c# entity-framework

请考虑以下示例:

public override int SaveChanges()
{
    foreach (var auditableEntity in ChangeTracker.Entries<ISomething>())
    {
        if (auditableEntity.State == EntityState.Added)
        {
            //Create a new instance of the same entity type. 
            //I don't know which one will be. They just have the same interface.
            var newEntity = ?; //???Reflection???

            //ISomething known properties.
            newEntity.propX = "1";
            newEntity.propY = "2";

            //Invoke Add method.
            ??.Add(newEntity); 
        }
    }

    return base.SaveChanges();
}

我需要在SaveChanges()方法中动态创建所有ISomething实体的实例,以便在其上添加新的特定条目

非常欢迎任何帮助。

此致

1 个答案:

答案 0 :(得分:3)

您可以使用非通用DbContext.Set Method (Type)来获取相应的非通用DbSet。然后,您可以使用Create方法创建相同类型的新实例,并使用Add方法添加它。

这样的事情:

var entityType = auditableEntity.Entity.GetType();
var dbSet = Set(entityType);
var newEntity = (ISomething)dbSet.Create();

//ISomething known properties.
newEntity.propX = "1";
newEntity.propY = "2";

dbSet.Add(newEntity);