2013-12-08 132 views
1

我在asp.net應用程序webforms中使用codefirst EF。我必須上課:codefirst一對一的關係

public class Product 
{ 

    [ScaffoldColumn(false)] 
    public int ProductID { get; set; } 
    public string ProductName { get; set; }   
    public virtual Picture Pic{ get; set; } 

} 

public class Picture 
{ 
    [ScaffoldColumn(false)] 
    [Key] 
    public int PictureID { get; set; } 


    public String Path { get; set; } 


    [ForeignKey("Product")] 
    public int? ProductID { get; set; } 

    public virtual Product Product { get; set; } 
} 

這些類之間的關係是一對一的。我設置了ForeignKey屬性,但是當我運行Update-database時,我收到了「Multiplicity在Role中無效。因爲Dependent Role屬性不是關鍵屬性,所以依賴角色的多重性的上界必須是'*'。 你能幫我嗎?

回答

0

What does principal end of an association means in 1:1 relationship in Entity framework

的一個一對一的關係是的EntityFramework可以處理的是兩個主鍵(無外鍵存在),其中一個實體是校長,另一個是之間的關係相關。從屬關係是指將專家實體標識作爲主要關鍵字。意思是從屬關係的主鍵也是它的外鍵。

在您的情況下,產品將是委託人,而圖片將是依賴性的。因此,具有ID(5)的產品的PictureID也是(5)。

這樣,你的類應該如下所示:

[Table("Product")] 
public class Product 
{ 
    [Key, ScaffoldColumn(false)] 
    public int ProductID { get; set; } 
    public string ProductName { get; set; } 
    public virtual Picture Pic { get; set; } 
} 

[Table("Picture")] 
public class Picture 
{ 
    [ScaffoldColumn(false)] 
    [Key, ForeignKey("Product")] // Key, and Foreign Key the refers to ProductID 
    public int PictureID { get; set; } 

    public String Path { get; set; } 

// public int? ProductID { get; set; } // No foreign key, and ProductID can be accessed through the Product object below 

    public virtual Product Product { get; set; } 
} 

和你的數據庫應該是這樣的:

One-to-one relationship