繁体   English   中英

我可以在Entity Framework Code First中为复杂类型定义一对多关系吗?

[英]Can I define a one-to-many relationship on a complex type in Entity Framework Code First?

我有类似以下玩具示例的情况:

public class Person
{
    public Guid Id { get; set; }
    public string FullName { get; set; }
    public ContactInfo ContactInfo { get; set; }
}

public class ContactInfo
{
    public string EmailAddress { get; set; }
    public IEnumerable<Address> PostalAddresses { get; set; }
}

public class Address
{
    public Guid Id { get; set; }
    public Guid PersonId { get; set; }
    /* ... other properties ... */
}

实际情况要复杂得多,我真的希望与PostalAddresses属性等效的对象位于ContactInfo而不是Person

使用“实体框架代码优先”是否可能?


编辑

基本上,我希望以上内容被序列化为以下表结构:

  • 桌子:人

    • ID
    • 全名
    • ContactInfo_EmailAddress
  • 表:地址

    • ID
    • 人名
    • ...

所以问题是我需要让IEnumerable<Address>集合位于ContactInfo复杂类型上,而不是根类型Person 当我保存一个Person对象时,没有Address行被添加到数据库中。

您的问题似乎很清楚。

我不是专家,但是根据如何指定复杂类型上的关系? 您尝试做的事是不可能的。 ComplexType不能具有导航属性。

我想解决方法是将ContactInfo定义为实体,而不是复杂的类型。 因此,ContactInfo将具有一个PK及其自己的表。

也许其他人知道更好的解决方案?

顺便说一句,我试图做类似的事情。 我的(简体)域:

应用

  • ID:int
  • 候选人:候选人
  • 简历:简历<==我不想为此类提供单独的表格,但是如何实现呢?

恢复

  • 经历:[经验]
  • 培训:[培训]

经验

  • ID:int
  • 说明:字符串

训练

  • ID:int
  • 说明:字符串

候选人

  • ID:int
  • 名称:字符串

我最终也给了Resume一个ID,但是结果是一个冗余的Review表,该表仅由一列组成,即履历ID(等于应用程序ID)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM