gar*_*daz 3 asp.net-mvc entity-framework ef-code-first
我正在使用EF Power Tools对现有数据库进行逆向工程.这可以.在EDMX Database-1st Route下,我将为Data Annotations等任何覆盖创建部分类,例如,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; }
}
}
Run Code Online (Sandbox Code Playgroud)
这可以.现在我对Code First Reverse Engineer使用相同的方法,还是有任何自定义设置,如果你必须多次运行电动工具,因为我向数据库添加了一个新表,它不会覆盖对数据库的任何更改以前创建的现有模型.
这最终意味着我可以自己更改实际的模型类,而不是创建部分类.
可以在此处找到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模板以向生成的类添加部分声明,或者您可以添加代码以测试特定实体并根据需要修改它们.
但实际上,您不应该这样做.将您的实体传递给您的视图被认为是糟糕的设计,这是将这些属性添加到模型的唯一原因.最重要的是,您强制您的视图与数据模型具有相同的要求,这也是一个糟糕的选择.
您应该使用包含视图的专用视图模型,并将数据属性放在视图模型上.
| 归档时间: |
|
| 查看次数: |
4510 次 |
| 最近记录: |