我有以下(简化的)类:
public class Person
{
public string Id {get; set;} //Ignore the fact that the Id is string -- legacy system
public string Firstname {get; set;}
public ICollection<Member> Memberships {get; set;}
...
}
public class Account
{
public string Id {get; set;}
public string AccountType {get; set;}
...
}
public class Member
{
public string AccountNumber {get; set;}
public string PersonNumber {get; set;}
public Account Account {get; set;}
public Person Person {get; set;}
...
}
以及以下 EF 配置:
//In Accounts configuration class
ToTable("missacct");
HasKey(a => a.Id);
//In Members Configuration class
ToTable("members");
HasKey(a => new { a.AccountNumber, a.PersonNumber});
HasRequired(a => a.Person).WithMany().HasForeignKey(p => p.PersonNumber);
HasRequired(a => a.Account).WithMany().HasForeignKey(a => a.AccountNumber);
//In Persons Configuration Class
ToTable("person");
HasKey(p => p.Id);
HasMany(p => p.Memberships).WithOptional().HasForeignKey(p => p.PersonNumber);
这里的意图是存在人员和帐户。没有成员就不能存在帐户,并且成员始终是一个人。但是,一个人可以在没有成为帐户成员的情况下存在。
这个想法是我希望能够查询以下内容:
- 给定一个特定的帐号,我想找到该帐户上的所有人。
- 给定一个名字/姓氏组合,我想找到所有名称匹配的人以及他们可能是其成员的任何帐户。
我所拥有的目前似乎不起作用。我收到一个循环引用错误,但我不太确定哪里出错了。
谢谢你的尽心帮助!