我使用 EF Power Tools 对 逆向工程 现有数据库。这可以。在 EDMX Database-1st Route 下,我将为任何覆盖(如数据注释)创建部分类,例如在这里, 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; }

    }
}

这可以。现在我是否对 代码第一逆向工程师 使用相同的方法,或者是否有任何自定义设置,如果您必须多次运行电动工具,因为假设我向数据库添加了一个新表,它不会覆盖任何更改到先前创建的现有模型。

这最终意味着我可以对实际的模型类本身进行更改,而不是创建部分类。

可以在此处找到对 EF Powertools 的引用:

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

最佳答案

Code First 不正式支持逆向工程方案,这就是它被称为 Code First 的原因。电动工具很好,但正如你所说,它们会覆盖东西。 EF Code First 旨在让您对模型本身进行更改,而不是对部分和元数据进行更改(尽管您仍然可以根据需要使用它们)。

您可以做的是使用 EF Power Tools 的自定义逆向工程师模板功能,然后修改 T4 模板以向生成的类添加部分声明,或者您可以添加代码来测试特定实体并根据需要修改它们。

但是,实际上,您不需要这样做。将您的实体传递给您的 View 被认为是糟糕的设计,这将是将这些属性添加到模型的唯一原因。最重要的是,您正在强制您的 View 与您的数据模型具有相同的要求,这也是一个糟糕的选择。

相反,您应该在 View 中使用专用的 View 模型,并将数据属性放在 View 模型上。

关于asp.net-mvc - Entity Framework - 逆向工程代码优先 - 覆盖更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12826673/

10-13 08:32