C# 实体框架5 DbUpdateException:非Null成员的Null值

C# 实体框架5 DbUpdateException:非Null成员的Null值,c#,entity-framework,C#,Entity Framework,我有一些数据模型: [DataContract(Name = "artist")] public class artist : IEqualityComparer<artist> { [Key] [XmlIgnore] [DataMember] public int ID { get; set; } [DataMember] [XmlElement(ElementName = "name")] public string na

我有一些数据模型:

[DataContract(Name = "artist")]
public class artist : IEqualityComparer<artist>
{
    [Key]
    [XmlIgnore]
    [DataMember]
    public int ID { get; set; }

    [DataMember]
    [XmlElement(ElementName = "name")]
    public string name { get; set; }

    [DataMember]
    [XmlElement(ElementName = "mbid", IsNullable = true)]
    public string mbid { get; set; }

    [DataMember]
    [XmlElement(ElementName = "url")]
    public string url { get; set; }

    [XmlElement(ElementName = "image", IsNullable = true)]
    public List<string> image { get; set; }

    [DataMember(IsRequired=false)]
    [XmlElement(ElementName = "stats", IsNullable = true)]
    public stats stats { get; set; }

    public double? match { get; set; }
    public List<tag> tags { get; set; }
    [XmlElement(ElementName = "similar")]
    [DataMember(Name = "similar")]
    public List<artist> similar { get; set; }

    [DataMember]
    [XmlElement(ElementName = "bio", IsNullable = true)]
    public wiki bio { get; set; }


    public bool Equals(artist x, artist y)
    {
        return x.name == y.name;
    }

    public int GetHashCode(artist obj)
    {
        return obj.name.GetHashCode();
    }
}
和数据库包含:

[Table("CachedArtistInfo")]
public class MusicArtists
{
    [Key]
    public string artistName { get; set; }
    public artist artistInfo { get; set; }

    private DateTime _added = default(DateTime);
    [DataMember(IsRequired = true)]
    [Timestamp]
    public DateTime added
    {
        get
        {
            return (_added == default(DateTime)) ? DateTime.Now : _added;
        }
        set { _added = value; }
    }
}
最后一步:

        foreach (artist a in id)
        {
            df.CachedArtists.Add(new MusicArtists() { artistName = a.name, artistInfo = a });
            df.SaveChanges();
        }
错误: 例外类型 “System.Data.Entity.Infrastructure.DbUpdateException” “非空成员的空值。成员:'stats'。” 一个变量被完全填充,对象状态在其中。 怎么了


复杂类型不能为null-因此在保存之前必须创建类的实例。这篇文章帮助我解决了同样的问题。

哦,我现在离编程太远了,谢谢你通知我EF5:)+1你已经将stats对象添加到上下文中了吗?
        foreach (artist a in id)
        {
            df.CachedArtists.Add(new MusicArtists() { artistName = a.name, artistInfo = a });
            df.SaveChanges();
        }