1

我有一個實體,稱爲Service類似以下內容:ASP.Net MVC實體框架代碼優先導航屬性

public class Service 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int serviceId { get; set; } 
    public string name { get; set; } 
    public string description { get; set; } 

    public ServiceCategory category { get; set; } 
} 

類別是由用戶通過下拉菜單所選擇持有ID和的名字數據庫中可用的類別。 ViewModel會將這個ID返回給我保存。到目前爲止,我一直這樣做的方式是進入我的存儲庫,獲取id與視圖中所選類別匹配的類別對象,然後分配它。這當然需要往返數據庫。

我想知道,因爲我已經有了ID,有沒有更好的方式做到這一點,我不去數據庫?

回答

1

修改代碼以

public class Service 
{ 
[Key] 
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
public int serviceId { get; set; } 
public int ServiceCategoryId {get; set;} // Added 
public string name { get; set; } 
public string description { get; set; } 

public ServiceCategory ServiceCategory { get; set; } 
} 

,並填寫ServiceCategoryId

+0

這樣,它會自動將ServiceCategoryId映射到ServiceCategory? – hjavaher

+0

@hjavaher EF將從serviceid加載關聯的ServiceCategories,ServiceCategoryId將允許您訪問子表中的基礎鍵。也可以選擇緩存,將結果保留在內存中,以便更快地訪問,而無需訪問數據庫 – Justin

+0

好吧,我認爲我們有一些輕微的錯誤交流。上面的類是我的模型我正在使用viewModel發回我選擇的servicecategoryid。當我向數據庫添加一項新服務時,通常我會到數據庫中,找到所需的類別,將其加載到內存中並將其分配給服務。我問,因爲我已經有了ID,並在數據庫中唯一保存的是作爲FK的ID我可以保存自己的數據庫往返加載類別? – hjavaher

相關問題