2012-01-05 93 views
0

EF代碼第一次 - 型號EF4.1模型設計

我有2類:

public class Alias 
{ 
    public int id { set; get; } 
    public string Name { set; get; } 
    public ICollection<Tweet> Tweets { set; get; } 
} 

public class Tweet 
{ 
    public int id {set;get;} 
    public Alias Author { set; get; } 
} 

它創建了一個AUTHOR_ID(FK)在鳴叫類。好的是有道理的,因爲它有兩個模型之間的關係。但是它怎麼沒有在Alias類中創建Tweet_Id(FK)呢?還是因爲我在使用ICollection?爲什麼它會在Tweet類中創建FK而不是相反?

什麼關鍵字告訴EF在其模型

而且我想下面的代碼,它無法創建FK ....

public class Alias 
{ 
    public int id { set; get; } 
    public string Name { set; get; } 
    public Tweet Tweets { set; get; } 
} 

public class Tweet 
{ 
    public int id {set;get;} 
    public Alias Author { set; get; } 
} 

我想了解模型是如何工作的,如何以及何時創建FK? ...請給我一個簡短的解釋...提前謝謝!

+0

你在做實體框架代碼首先,對不對? – dknaack 2012-01-05 23:26:37

+0

是的,這是正確的。 – Ben 2012-01-05 23:27:30

+1

這是關於關係數據庫的核心知識,所以如果你不理解這些概念,你應該停止使用EF並嘗試學習一些關於關係數據庫的知識。沒有對關係概念的基本理解,您將無法正確使用EF。 – 2012-01-06 09:11:57

回答

0

SQL在兩個表上都不需要外鍵。在C#中沒有方向的概念。

Tweet表需要一個ID來表示它連接的是哪個別名。從中你可以很容易地查詢那個別名所做的所有推文。

如果在別名表上有Tweet_Id,當同一個人發出第二條推文時會設置什麼?

+0

Thx David,你的回答是有道理的,因爲它是1..many。但是如果我有1到0..1誰會有FK?你如何選擇包含FK的模型?如果你還可以提供一個示例,說明如何編寫基於(1到0..1)的模型,這將是非常有用的...再次感謝 – Ben 2012-01-09 15:24:20

+0

0..1:我不太確定它會如何地圖。我需要嘗試一下,看看。從技術上講,我認爲你可以把外鍵放在任何一端。在SQL中,在Alias表中創建一個可爲空的Tweet_Id可能會更加明確,但我不太清楚EF是否能夠說明它會做什麼。 我可以嘗試獲得一個例子,但我不能保證它很快就會實現... – 2012-01-10 00:58:05