我有一个使用实体框架的项目,现在我想添加一个新的实体到框架中,数据库有一些细微的变化,不会影响代码,但是,如果我想通过更新向导添加一个新的实体,这些更改也会实现,并且会抛出错误。我想唯一的办法就是手动添加实体,但我不知道怎么做。
发布于 2014-01-09 16:07:03
将实体框架与模型一起使用时,应对自己的代码使用分部类。在分部类中,您将其放入您的代码中(这样当您更新Model时,您就不会丢失它)。我建议您更新模型并修复错误,因为将来必须更频繁地更新模型,并且不希望每次更改时都手动编写xml。
发布于 2014-01-09 16:24:27
假设您只想在数据库中创建一个表示表的新实体,则可以使用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
}..and,那么配置类本身看起来就像:
public class MyEntityClassConfig : EntityTypeConfiguration<MyEntityClassConfig>
{
public MyEntityClassConfig()
{
ToTable("My_Database_Table_Name");
HasKey(table => table.Name_of_primary_key);
}
}https://stackoverflow.com/questions/21014581
复制相似问题