2015-05-06 27 views
0

我有一個Kendo UI Grid,它使用Serial類作爲它的模型。這個類與row類有關係,但我沒有在我的Grid中使用任何導航屬性,並且在這個特定頁面中我不需要它們。Kendo Grid填充併發布所有導航屬性

問題是,Kendo UI填充所有的外鍵關係。所以row類和它自己的所有導航屬性將被填充。當我嘗試保存我的編輯時,Kendo發佈了所有這些數據,並且這導致ModelState.IsValid始終爲false。你有什麼建議嗎?

這是Serial類,我爲每個屬性都有一個字段。

public class Serial 
{ 
    [Key] 
    [Column(TypeName = "BIGINT", Order = 0)] 
    public Int64 LiIdR { get; set; } 
    [ForeignKey("LiIdR")] 
    public virtual Rows Row { get; set; } 

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Int16 SRadifS { get; set; } 
    public string AFromSerial { get; set; } 
    public string AToSerial { get; set; } 
    public int? IQnty { get; set; } 
    public string AExpireDate { get; set; } 
    public string AComment { get; set; } 
} 
+0

你是否用另一種方式解決了你的問題? – Nicholas

+0

不,不幸的是我沒有找到任何其他方式。我的類有很多字段,爲所有字段創建視圖模型真的很痛苦。 – Akbari

+1

總是可以使用https://visualstudiogallery.msdn.microsoft.com/655aa6d4-4461-42ea-aeec-64cdb1313de7;)來生成它們 – Nicholas

回答

1

在視圖中使用生成的實體框架對象通常是一種不好的做法。您的視圖不應該依賴於數據訪問層。

您應該做的是將EF實體轉換爲業務/數據層中的視圖模型(僅包含您的網格所需)。這將解決您的問題。

在編輯/創建時,只需將視圖模型轉換回EF對象並將更改保存到數據庫即可。

如果由於某種原因,您的視圖需要某些您不想顯示給用戶的屬性,則可以將它們作爲Hidden()列添加到網格中。然後他們會回到控制器。