1

在这种情况下,我有一个包含三个模型的现有数据库:

Address,它有一个'AddressId','ParentId','City','State'等

Person,它有一个“PersonId”、“Name”等。

Company,它有一个“CompanyId”、“Name”等。

因为Address可以包含更多模型的行而不仅仅是一个表,所以没有外键;“ AddressParentId”列将包含“PersonId”或“CompanyId”。

为了生成我的DbContext.,我使用了 Entity Framework Power Tools Beta 2。由于缺乏参照完整性,它生成的类PersonCompany包含它们应该包含的地址集合。

我将如何更改这些类以添加到此“地址”属性中,并确保它正确映射到地址表?

目前我正在做这样的事情;如果可能的话,我宁愿有上下文映射:

public IEnumerable<Address> Addresses
{
   get 
   {
       IEnumerable<Address> addresses = null;
       using(MyDb db = new MyDb())
       {
            addresses = db.Addresses.Where(a => a.ParentId == this.PersonId)
       }

       return addresses;
   }
}

谢谢!

4

2 回答 2

2

如果可以的话,您应该在地址表中添加一个唯一的 id,然后将该 id 与其所属的实体一起存储,无论是个人、公司、供应商等。

如果由于多地址情况而不能,那么您可以创建一个新表 AddressXRef 表来存储实体(供应商、人员、公司等)的 GUID 和地址的 GUID;所以每个实体都可以有多个地址,并且 EF 会对这个设置非常满意,因为周围会有钥匙。

(我还想要外部参照表上的某种地址类型指示器,这样我就知道它是什么类型的地址,邮寄、运输等)

于 2012-10-03T19:21:53.467 回答
0

为两者创建部分类,Company并且Person它们具有您在其中创建的属性。

public partial class Company
{
   public IEnumerable<Address> Addresses { ... }
}
于 2012-10-03T19:14:18.417 回答