繁体   English   中英

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

[英]How to update entity in entity-framework manually

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

当将实体框架与模型一起使用时,应为自己的代码使用部分类。 在部分类中,您放入了代码(因此,在更新模型时,您不会丢失它)。 我建议您更新模型并修复错误,因为将来您将不得不更频繁地更新它,并且您不想在每次更改时都手动编写xml。

假设您只想创建一个表示数据库中表的新实体,则可以使用另一个SO问题中的此过程 这应该为您提供一个仅由一个表生成的新实体类,而忽略了数据库的其余部分。

更新,回答以下问题:

如果您能够创建实体类,但未在需要的地方显示它,请确保已将其添加到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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM