gpt4 book ai didi

entity-framework - EF 4.2,代码优先 - 复杂类型中的导航属性

转载 作者:行者123 更新时间:2023-12-04 10:20:42 25 4
gpt4 key购买 nike

我知道我可以通过将所有内容推送到单个实体而不是嵌套复杂类型(因为它们只是 1-1 映射)来解决这个问题,但我喜欢它在生成的 OM 中对属性进行分组的方式。

我有一个包含复杂类型“CrmData”的客户实体。 CrmData 实体具有复杂的地址类型。

public class Customer {
[Required]
public CrmSpecificData CrmData { get; set; }
}
[ComplexType]
public class CrmSpecificData {
[MaxLength(40)]
public string FirstName { get; set; }

[MaxLength(80)]
public string LastName { get; set; }

public Address Address { get; set; }
}
[ComplexType]
public class Address {
[MaxLength(150)]
public string Address1 { get; set; }

[MaxLength(150)]
public string Address2 { get; set; }

[MaxLength(100)]
public string City { get; set; }

[MaxLength(15)]
public string PostalCode { get; set; }

public StateProvince StateOrProvince { get; set; }

public virtual CountryRegion CountryOrRegion { get; set; }
}

StateProvince 和 CountryRegion 类型是我的数据库中的实体(类似于 AdventureWorks 示例数据库的工作方式)。问题是当 EF 尝试创建模型时,它失败了:

类型“MyCo.Crm.Entities.StateProvince”已配置为实体类型。它不能重新配置为复杂类型。

我试过使 StateProvince 成为复杂类型,但这并不能解决问题。想法?
public class StateProvince {
[Key]
public int StateProvinceId { get; set; }

[MaxLength(3)]
public string StateProvinceCode { get; set; }

[MaxLength(50)]
public string Name { get; set; }
}

最佳答案

复杂类型 cannot contain navigation properties .导航属性只能在实体中定义。所以你必须:

  • 使用 table splitting而不是复杂类型,但它会导致另一个问题 - 例如,您将无法嵌套这些类型,您将不得不使用急切/延迟加载来加载它们。
  • 将所有导航属性移至主实体
  • 关于entity-framework - EF 4.2,代码优先 - 复杂类型中的导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8616007/

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