我有一個Web API項目,由MSSQL數據庫支持,該數據庫包含(幾乎)每個表上的創建和修改字段。這些字段上有觸發器,分別在插入和更新記錄時更新。在序列化中使用JsonIgnore,但不在反序列化中使用;與部分模型混淆
現在,當我在成功請求後將數據序列化爲JSON數據時,我確實希望發送那些創建和修改的字段,以便發出請求的前端可以完成它們的工作。然而,我不想要的是,當數據被反序列化(或者,回發)時,這些字段可以被修改。很簡單,你會說,只需在字段上使用[JsonIgnore]屬性;把它只放在集合上,而不是放在集合上。
現在,這裏是開始讓我感到困惑的地方。我的項目中的所有模型都是從實體模型(.edmx)自動生成的。因此,我不能直接編輯模型本身的任何東西,但我必須在它們上面生成部分模型。我在其他SO線程中看到了使用[MetadataType]屬性的解決方案,就像這個here一樣。
但是,我如何將這個(有效)應用於我的情況?我一直在四處搜尋,但還沒有找到如何在「更高」的部分類中分解自動實現的屬性的例子。即使如此,這意味着我將不得不爲我的所有模型創建部分類,這將非常麻煩。我無法想象沒有人曾經這樣做過,所以不會有更優雅的方式來追求這一點嗎?
類的一個例子是:
public partial class Person
{
[DataMember]
public Nullable<System.DateTime> Created { get; set; }
[DataMember]
public Nullable<System.DateTime> Modified { get; set; }
}
從您的實體模型創建Dto對象而不是直接使用Enity模型 – 2013-03-28 10:05:37
我真的需要爲每個類生成DTO,以便將創建和修改的字段保留在集合操作之外嗎? 這會產生很多開銷,我猜... – Kazu 2013-06-24 13:12:00