2013-04-20 33 views
1

我正在使用代碼優先方法來基於模態和數據庫上下文類創建數據庫。問題是,當我創建一個模型和下一個模型之間的關係並運行代碼時,數據庫會像它應該那樣生成外鍵。使用外鍵在實體中創建關係

如何我想要的關係,與出外鍵。這可能與實體框架和代碼優先方法有關嗎?

例如:

namespace LocApp.Models 
{ 
    public class Location 
    { 
     public int id { get; set; } 
     [Required] 
     public string name { get; set; } 
     [Required] 
     public string address { get; set; } 
     [Required] 
     public string city { get; set; } 
     [Required] 
     public string country { get; set; } 
     [Required] 
     public string province { get; set; } 
     [Required] 
     public string phone { get; set; } 
     public string fax { get; set; } 
     public bool active { get; set; } 

     public virtual ICollection<LocationAssignment> LocationAssignment { get; set; } 
    } 
} 

有關係:

namespace LocApp.Models 
{ 
    public class LocationAssignment 
    { 
     public int id { get; set; } 
     public int locationID { get; set; } 
     public int serviceID { get; set; } 
     public int productID { get; set; } 
     public int personID { get; set; } 

     public virtual Location Location { get; set; } 
     public virtual Service Service { get; set; } 
     public virtual Product product { get; set; } 
     public virtual Person person { get; set; } 
    } 
} 

正如你可以看到這個表將與位置表生成的外鍵。如何保持這種關係WITH OUT外鍵的生成?

+0

爲什麼你不想要外鍵? – 2013-04-20 20:11:42

+0

,因爲顯然公司並不知道如何管理數據庫,只會在產品交付後放棄所有外鍵約束,這會破壞或破壞應用程序。所以我正在嘗試使用不生成外鍵的代碼優先方法創建表。然而,保持關係 – TheWebs 2013-04-20 20:14:23

+0

這是最奇怪的使用代碼首先我聽到:)但有趣的 - 所以你實際上不希望'FK-s'在數據庫生成的權利? (不僅僅是在您的POCO中顯示爲一個屬性)。 – NSGaga 2013-04-20 21:13:11

回答

0

用戶觸發器在插入和更新並刪除相對錶和參考表時!但這並不可愛,你必須控制應用程序中的所有東西

+0

有沒有辦法,當你創建數據庫的init類來填充虛擬數據的表,要說使用db上下文類丟棄外鍵指針? – TheWebs 2013-04-20 20:37:16