entity-frameworkentity-framework-4ef-code-firstef4-code-onlyxml-column

XML data type in EF 4.1 Code First


I would like to use SQL Server xml type as a column type for an entity class.

According to this thread it's possible to map such a column to string type:

public class XmlEntity
{
   public int Id { get; set; }

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

The table is correctly generated in the datebase by this definition. New XmlEntity objects are also can be created.

But then I try to get some entity from the database:

var entity = db.XmlEntities.Where(e => e.Id == 1).FirstOrDefault();

An error occurs:

One or more validation errors were detected during model generation System.Data.Edm.EdmEntityType: EntityType 'XElement' has no key defined. Define the key for this EntityType.


Solution

  • The problem was with my wrapper property:

    [NotMapped]
    public XElement XmlValueWrapper
    {
        get { return XElement.Parse(XmlValue); }
        set { XmlValue = value.ToString(); }
    }
    

    I didn't specified NotMapped attribute.