1

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では、これらの関連付けはどのように確立されますか?

4

1 に答える 1

2

ナビゲーション プロパティを設定する通常の方法は、ModelBuilder を使用することです。これにより、関連付けを設定するための流暢な API が提供されます。これについての詳細な情報については、こちらを参照してください。

http://xhalent.wordpress.com/2011/01/21/configuring-entity-framework-4-codefirst/

エンティティ フレームワークは、nav プロパティを手動で設定しない場合、意図したことを推測します。上記の場合、顧客と BrokerageAccount の間に 1-* 関係が 1 つしかないため、期待どおりに nav プロパティが設定される可能性があります。賢明に名付けられました。

ナビゲーション プロパティの設定に使用できる属性メソッドもあります。

于 2012-04-09T01:31:23.090 に答える