gpt4 book ai didi

c# - DDD 项目的数据库优先模型中的复杂类型

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:44 25 4
gpt4 key购买 nike

假设在我的 EF6 项目 [数据库优先方法] 中,我有一个名为 Address 的复杂类型 [只是为了澄清我的复杂类型没有任何标识,只是独立聚合的合并数据,它甚至不对自己的持久性负责]

目前,我将与地址关联的所有字段作为地址组成部分的直接属性,并为 Person 类提供以下自动生成的定义:

public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public Nullable<int> Easting { get; set; }
public Nullable<int> Northing { get; set; }
public string Building { get; set; }
public string County { get; set; }
public string PostCode { get; set; }
public string StreetName { get; set; }
public string StreetNumber { get; set; }
public string Town { get; set; }
public string Unit { get; set; }
public string Village { get; set; }
public int CountryId { get; set; }
}

理想情况下,我希望有如下内容[每次我从数据库更新模型时]:

public class Person         
{
public int Id { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
}

public class Address
{
public Nullable<int> Easting { get; set; }
public Nullable<int> Northing { get; set; }
public string Building { get; set; }
public string County { get; set; }
public string PostCode { get; set; }
public string StreetName { get; set; }
public string StreetNumber { get; set; }
public string Town { get; set; }
public string Unit { get; set; }
public string Village { get; set; }
public int CountryId { get; set; }
}

当我从数据库 (SQL Server 2012) 更新我的模型时,我如何才能将所有与地址相关的字段作为一个名为地址的聚合字段?

据我所知,唯一的出路是修改 T4 模板。如果您唯一建议的解决方案是 T4 模板交替,请向我展示一些采用类似策略的示例项目或提供您自己的版本。

最佳答案

当您在 EF 中使用数据库优先方法时,您将生成类的所有责任都交给了生成器。所以你不能用这种方法得到复杂类型的地址。您应该使用其他方法来获得您想要的。如果我是你,我会使用代码优先方法并在代码中编写从现有数据库到类的映射。

关于c# - DDD 项目的数据库优先模型中的复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26423564/

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