2012-04-08 89 views
1

EF有點新,所以如果答案很明顯,請耐心等待。我做了使用EF的教程,和兩個DbSets被這樣定義:實體框架代碼優先:DbSets和導航屬性

public DbSet<BrokerageAccount> BrokerageAccounts { get; set; } 
    public DbSet<Customer> Customers { get; set; } 

客戶類看起來像this--這是一個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和BrokerageAccount之間的主程序中存在一個我沒有遵循的關聯。該代碼讀取這樣的:

public Customer GetCustomer(string custId) 
    { 
     using (var context = DataContext) 
     { 
      return context.Customers 
       .Include("BrokerageAccounts").SingleOrDefault(c => c.CustomerCode == custId); 
     } 
    } 

我無法弄清楚如何關聯/加入的客戶和BrokerageAccount之間進行。我沒有看到我的VS 2010項目中的任何配置或其他文件,它告訴哪些同事使用兩個DbSets,使用什麼外鍵列等。

也許我錯過了某些明顯的東西或某種映射文件,但僅僅因爲客戶擁有BrokerageAccount的ICollection以及上面提到的「導航屬性」註釋,並不是如此。在英孚,這些協會是如何建立的?

+1

「只是因爲客戶擁有BrokerageAccount的ICollection以及上面的說明」導航屬性「的註釋,但並非如此。」那麼,評論不會,但屬性本身就是這樣。 EF Code First將查找「ICollection 」屬性並與由「T」表示的實體建立關係。 – 2012-04-09 00:03:44

+0

很高興認識Matt,謝謝。有沒有一個網頁概述Code First在建立關係時會嘗試的步驟? – larryq 2012-04-09 03:26:24

回答

2

設置導航屬性的正常方法是使用模型構建器,這會給你一個流利的api來設置關聯,看看這個關於如何去做這件事的一些深入的東西。

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

實體框架將在你的意思,如果你不手動設置的導航性能,它可能會設置您的導航性能像預期的那樣,你只能有一個1以上的情況下猜*顧客與BrokerageAccount之間的關係看起來很明顯。

還有一種屬性方法可用於設置導航屬性。

+0

完美,非常感謝。 – larryq 2012-04-09 01:32:26

相關問題