我使用 EF Power Tools 来反向工程现有的数据库。这可以。在 EDMX 数据库第一条路线下,我将为任何覆盖(例如数据注释)创建部分类,例如这里,账期是原始的 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 Powertools 的参考:
http://blogs.msdn.com/b/adonet/archive/2012/04/09/ef-power-tools-beta-2-available.aspx 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 模板以将部分声明添加到生成的类中,或者您可以添加代码来测试特定实体并根据需要进行修改。
然而,实际上,您不需要这样做。将实体传递到视图被认为是糟糕的设计,这是将这些属性添加到模型的唯一原因。最重要的是,您强迫视图与数据模型具有相同的要求,这也是一个糟糕的选择。
相反,您应该在视图中使用专用视图模型,并将数据属性放在视图模型上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)