次の(簡略化された)クラスがあります。
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);
ここでの意図は、人物とアカウントが存在することです。アカウントはメンバーなしでは存在できず、メンバーは常に個人です。しかし、人はアカウントのメンバーでなくても存在できます。
アイデアは、次のクエリを実行できるようにすることです。
- 特定の口座番号を指定すると、その口座のすべての人を見つけたいと思います。
- 名と姓の組み合わせを指定して、名前が一致するすべての人物と、その人物がメンバーである可能性のあるアカウントを検索したいと考えています。
私が持っているものは現在機能していないようです。循環参照エラーが発生していますが、どこが間違っているのかよくわかりません。
ご協力いただきありがとうございます。