如何以编程方式更新实体模型(EF 5)

时间:2019-04-04 08:54:23

标签: c# entity-framework

我们获得了一个使用VS2015制作的C#应用​​程序,其中使用了实体框架(EF 5首先包含数据)。

在模型中,我们必须将数据库中某些包含的实体中的列调整为StoreGeneratedPattern = Computed。

在我们的示例中,我们在这些实体中获得了datetime类型的列,在该列中,我们希望在插入当前时间戳(如在数据库中定义)的情况下,无需在代码中明确设置它。

这可以在EDMX设计器中通过手动设置图案来实现。

但是因为我们不时更新模型,方法是删除更改的实体,然后通过“从数据库更新模型”将其重新添加,因此模式设置将丢失,必须重新添加。

因为这很危险,如果开发人员忘记调整我们想通过代码在模型中进行调整的实体列之一。

因此,我们在实体模型的构造函数中尝试了此操作:

public MyEntity()
    : base("name=MyEntity")
{
    DbModelBuilder modelBuilder = new DbModelBuilder();
    modelBuilder.Entity<Table_A>().Property(t => t.column1)
        .HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed);
}

每次创建实体模型的实例时,都会执行代码。 但是-插入后,当前时间戳没有在数据库中设置,而不是像手动调整模式那样工作。

我们如何解决这个问题?

任何帮助将不胜感激。

帕特里克

1 个答案:

答案 0 :(得分:0)

生成的类将始终是部分类。这样,您就可以编写第二个局部类,并对其进行必要的修改。 在您的情况下,您可以创建另一个包含您的修改的局部类 更新Edmx之后,将不会重新生成创建的局部类