2011-07-15 123 views
1

我正在開發一個MVC3應用程序。 我通過ADO.NET DbContext生成器創建了我的POCO類和 我正在使用部分類來添加對屬性的驗證。 現在,當我試圖序列我的實體之一,我收到此錯誤:MVC3應用程序

"Cannot serialize member .... of type 'System.Collections.Generic.ICollection`1[....."

我GOOGLE了這個錯誤,我發現它可能 [XmlIgnore]添加標籤的某些屬性。 但關鍵是我不能把這個標籤放在屬性上,因爲它們每次都是由生成器創建的 。 那麼我如何以更簡單的方式做到這一點?

回答

1

關鍵是MetadataTypeAttribute。您可以將其添加到您的部分類中,該類實現了其他屬性和驗證邏輯。然後創建一個元數據類,其中包含您生成的類的相同名稱的屬性,並應用您需要的屬性。

[MetadataType(typeof(MyPOCOMetaData))] 
public partial class MyPOCO 
{ 
    // your partial validation code and properties 
} 

public class MyPOCOMetaData 
{ 
    [XmlIgnore] 
    public string GenerateProperyName { get; set; } 
} 
+0

我做到這一點,但它不工作 [MetadataType(typeof運算(Cliente_Validation))] 公共部分類Cliente { } 公共類Cliente_Validation { \t [XmlIgnore] 公衆虛擬ICollection​​Iscrizioni {get;組; } [XmlIgnore] public virtual ICollection Vendite {get;組; } } – Daniela

+0

如果您從元數據類屬性中刪除'virtual',它會工作嗎?我無法想象XmlSerializer會忽略元數據類型。 – DanielB

+0

我也試過,但它不起作用... [MetadataType(typeof(Cliente_Validation))] public partial class Cliente {} public class Cliente_Validation {[XmlIgnore] public virtual ICollection​​Iscrizioni {get;組; } [XmlIgnore] public virtual ICollection Vendite {get;組; }} – Daniela