2012-04-23 34 views
6

Tôi có một số mô hình dữ liệu:Entity Framework 5 DbUpdateException: giá trị Null cho không nullable viên

[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(); 
    } 
} 

và một loại phức tạp:

[DataContract] 
[ComplexType] 
[XmlRoot(ElementName = "streamable", IsNullable = true)] 
public class stats 
{ 
    [DataMember(IsRequired = false)] 
    public int listeners { get; set; } 

    [DataMember(IsRequired = false)] 
    public int playcount { get; set; } 
} 

và cơ sở dữ liệu bao gồm:

[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; } 
    } 
} 

Bước cuối cùng:

 foreach (artist a in id) 
     { 
      df.CachedArtists.Add(new MusicArtists() { artistName = a.name, artistInfo = a }); 
      df.SaveChanges(); 
     } 

LỖI: ExceptionType "System.Data.Entity.Infrastructure.DbUpdateException" "Null giá trị cho thành viên không nullable. ..? Member: "số liệu thống kê" một biến được đầy đủ đầy và số liệu thống kê đối tượng trong nó gì sai

enter image description here enter image description here

+0

Tôi quá xa lập trình bây giờ nhờ thông báo về EF5 :) +1 –

+2

Bạn đã thêm đối tượng thống kê vào ngữ cảnh chưa? – Mac

Trả lời

Các vấn đề liên quan