如何手动更新实体框架中的实体

时间:2014-01-09 07:57:23

标签: c# entity-framework

我有一个项目使用实体框架,现在我想在框架中添加一个新实体,数据库有一些不会影响代码的细微变化,但是,如果我想通过更新添加一个新实体向导也将实施更改并且将引发错误。我认为唯一的方法是手动添加实体,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

将Entity Framework与Model一起使用时,应该为自己的代码使用部分类。在您的代码中放入的部分类中(因此,当您更新模型时,您不会松开它)。我建议您更新模型并修复错误,因为将来必须更频繁地更新它,并且您不希望在每次更改时手动编写xml。

答案 1 :(得分:0)

假设您只想创建表示数据库中表的新实体,可以使用this procedure from another SO question。这应该为您提供仅从其中一个表生成的新实体类,同时忽略数据库的其余部分。

更新,回答以下问题:

如果您能够创建实体类,但它没有显示在您需要的位置,请确保已将其添加到Context中(应该有一个类DbContext })。寻找类似的东西:

public DbSet<SomeExistingEntityClass> SomeExistingEntityClass1 { get; set; }
public DbSet<SomeExistingEntityClass> SomeExistingEntityClass2 { get; set; }
...
public DbSet<YourEntityClass> YourEntityClass { get; set; } // <-- Add this

您可能还需要为新实体添加配置。做这件事有很多种方法;在我的例子中,配置在context类中指定如下:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new SomeExistingEntityClass1Config());
    modelBuilder.Configurations.Add(new SomeExistingEntityClass2Config());
    ....
    modelBuilder.Configurations.Add(new MyEntityClassConfig()); // <-- Add this
}

..然后config类本身看起来像:

public class MyEntityClassConfig : EntityTypeConfiguration<MyEntityClassConfig>
{
    public MyEntityClassConfig()
    {
        ToTable("My_Database_Table_Name");
        HasKey(table => table.Name_of_primary_key);
    }
}