2011-07-15 7 views
1

私はMVC3アプリケーションで作業しています。 ADO.NET DbContextジェネレータを使用してPOCOクラスを作成しました。 部分クラスを使用してプロパティの検証を追加しています。今 、私はこのエラーが発生した私のエンティティの1をシリアル化しよう: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] パブリック仮想ICollection ベンダイト{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仮想ICollection ベンダイト{get;セット; }} – Daniela

関連する問題