实体框架 - 逆向工程的Code First - 覆写变化(Entity Framework -

2019-09-23 22:05发布

即时通讯使用的EF电动工具反向工程现有的数据库。 这可以。 根据EDMX数据库-1路由我会在这里创造像数据注释的任何覆盖部分类,用于例如,LedgerPeriod是原始EntityObject:

[MetadataType(typeof(LedgerPeriodMetaData))]
public partial class LedgerPeriod
{
    public class LedgerPeriodMetaData
    {

        [Required(ErrorMessage = "Period Start Date Required")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        [DataType(DataType.Date)]
        public object PeriodDateFrom { get; set; }

        [Required(ErrorMessage = "Period End Date Required")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        [DataType(DataType.Date)]
        public object PeriodDateTo { get; set; }

    }
}

这可以。 现在我使用的Code First逆向工程同样的方法还是有任何自定义设置,由此,如果你有电动工具多次运行,因为说我增加了一个新的表到数据库,也不会覆盖到的任何变化现有的模型之前创建。

这最终意味着我可以做的,而不是创建部分类变为实际的模型类本身。

参考EF电动工具可以在这里找到:

http://blogs.msdn.com/b/adonet/archive/2012/04/09/ef-power-tools-beta-2-available.aspx

Answer 1:

代码首先不正式支持逆向工程的情况,这就是为什么它被称为代码优先。 电动工具是不错,但正如你所说,他们将覆盖东西。 EF代码优先的设计,让你让你自己修改的模型,不谐音和元数据(尽管你,如果你想仍然可以使用这些)。

你可以做的是使用EF电动工具的自定义逆向工程模板功能,然后修改T4模板局部声明添加到生成的类,或者你可以添加代码来测试特定的实体,只要你想修改这些。

然而,在现实中,你不应该需要做到这一点。 它被认为是不好的设计,你的实体传递给你的意见,这将是对那些属性添加到模型的唯一原因。 最重要的是,你强迫你的看法有相同的要求,你的数据模型,这也是一个不错的选择。

您应该改为使用专用的视图模型与您的意见,并放置在您的视图模型的数据属性。



文章来源: Entity Framework - Reverse Engineer Code First - Overwriting Changes