21

Code First で XML 列を作成しようとしています。Entity Framework が XML 列を完全にはサポートしていないこと、およびそれらを文字列として読み取ることは十分承知しています。それはいいです。ただし、列の型は XML にしたいと思います。これが私のクラスです:

class Content
{
    public int ContentId { get; set; }

    [Column(TypeName="xml")]
    public string XmlString { get; set; }

    [NotMapped]
    public XElement Xml { get { ... } set { ... } }
 }

問題は、Code First Migrations が Column 属性を完全に無視し、フィールドを として作成することnvarchar(max)です。を使ってみ[DataType("xml")]ましたが、それもうまくいきませんでした。

これは移行バグですか?

4

4 に答える 4

39

やってみました:

public String XmlContent { get; set; }

public XElement XmlValueWrapper
{
    get { return XElement.Parse(XmlContent); }
    set { XmlContent = value.ToString(); }
}

public partial class XmlEntityMap : EntityTypeConfiguration<XmlEntity>
{
    public XmlEntityMap()
    {
        // ...
        this.Property(c => c.XmlContent).HasColumnType("xml");

        this.Ignore(c => c.XmlValueWrapper);
    }
}
于 2012-10-01T14:20:33.440 に答える