EFは少し新しいので、答えが明らかな場合はご容赦ください。私はEFを使用するチュートリアルを行っており、2つのDbSetは次のように定義されています。
public DbSet<BrokerageAccount> BrokerageAccounts { get; set; }
public DbSet<Customer> Customers { get; set; }
顧客クラスは次のようになります-これはPOCOです(簡潔にするためにいくつかのコードがカットされています):
public class Customer
{
public Customer()
{
BrokerageAccounts = new HashSet<BrokerageAccount>();
}
// Primitive properties
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
// Navigation properties
public ICollection<BrokerageAccount> BrokerageAccounts { get; set; }
}
}
BrokerageAccountクラスもPOCOであり、設計がCustomerと非常に似ています。
ここまでは順調ですね。私が質問しているコードは以下のとおりです。私がフォローしていないCustomerとBrokerageAccountの間のメインプログラムで作成された関連付けがあります。コードは次のようになります。
public Customer GetCustomer(string custId)
{
using (var context = DataContext)
{
return context.Customers
.Include("BrokerageAccounts").SingleOrDefault(c => c.CustomerCode == custId);
}
}
CustomerとBrokerageAccountの間でどのように関連付け/結合が行われるのか理解できません。VS 2010プロジェクトに、2つのDbSetを関連付けるもの、使用する外部キー列などを示す構成ファイルやその他のファイルがありません。
おそらく私は何か明白なものやある種のマッピングファイルを見逃していますが、顧客がBrokerageAccountのICollectionと、上記の「ナビゲーションプロパティ」というコメントを持っているからといって、そうはなりません。EFでは、これらの関連付けはどのように確立されますか?