gpt4 book ai didi

asp.net-mvc - Entity Framework - 逆向工程代码优先 - 覆盖更改

转载 作者:行者123 更新时间:2023-12-01 10:59:14 24 4
gpt4 key购买 nike

我正在使用 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; }

}
}

这很好。现在我是否对 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 模板以将部分声明添加到生成的类中,或者您可以添加代码来测试特定实体并根据需要修改它们.

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

您应该改为对 View 使用专用的 View 模型,并将数据属性放在 View 模型上。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com