【问题标题】:Tweaking POCOs generated by EF Reverse Engineer调整 EF 逆向工程师生成的 POCO
【发布时间】:2012-08-03 15:08:35
【问题描述】:

我正在通过 EF Power Tools 从我的数据库生成 POCO,并准备开始调整和扩展它们。

This Q/A gets me past 最初的问题(如何添加部分),但我想知道提供的答案是否会针对 MVC4 项目发生变化。

但该答案专门针对验证。我还需要调整生成的构造函数——类似于this question。我的数据库架构,该实用程序构造我的用户对象,如下所示:

    public User()
    {
        this.Addresses = new List<Address>();
        this.Emails = new List<Email>();
        this.Institutions = new List<Institution>();
        this.Orders = new List<Order>();
        this.Phones = new List<Phone>();
    }

除了机构,这些都是正确的。一个用户可以拥有许多电话、电子邮件等。但只能属于一个机构。

我认为没有办法重新连接这个构造函数,这样就不会创建机构列表。因此,我将创建一个添加“机构”(单数)属性并分配机构.SingleOrDefault 并可能在 .Count>1 上进行一些标记/处理的方法?

所以我的部分类上的构造函数的行为与生成的类上的行为相同吗?它运行在一个新的 up 上?

谢谢

跟进:代码生成背后的 FK。我的机构可以通过用户身份字段基于“PrimaryContact”将许多用户和密钥返回给主要联系人。

机构: 约束 [FK_Institutions_Users] 外键 ([idPrimaryContact]) 引用 [dbo].[Users] ([ID])

用户: 约束 [FK_Users_Institutions] 外键 ([idUserInstitution]) 引用 [dbo].[Institutions] ([ID])

【问题讨论】:

    标签: entity-framework code-generation asp.net-mvc-4 partial-classes


    【解决方案1】:

    EF 电动工具正在创建这种关系,因为数据库允许一个用户拥有多个机构。我认为这是因为您的机构表上有一个 UserId 的 FK。如果这确实是 1:1 或 1:0.1 关系,也许您应该更改数据库,以便 User 表具有针对机构表的 FK(如果它是可选的,则可以为空)。

    如果这不是一个选项,那么还有其他一些方法可以做到这一点:

    您是否需要能够以模板方式或仅在单个实体上执行此操作?

    如果您需要重复执行此操作,您可能需要尝试更改生成实体对象的 TT 文件。 Rowan Miller had an excellent post 关于这个。

    无论哪种方式,您都可以像这样修改您的项目:

     public virtual List<Institution> Institutions { get; set; }
    
    public Institution Institution
    {
        get { return Institutions.SingleOrDefault(); }
    }
    

    然后只需绑定到您创建的机构属性。

    【讨论】:

    • +1 表示指向 T4 模板主题的当前链接的链接 - 也特定于 Power Tools。
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2011-07-24
    • 2023-03-24
    相关资源
    最近更新 更多