2012-04-23 27 views
6

Tengo algunos modelos de datos:Entity Framework 5 DbUpdateException: valor nulo para no anulable miembro

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

y un tipo complejo:

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

y la inclusión de bases de datos:

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

Paso final:

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

ERROR: ExceptionType "System.Data.Entity.Infrastructure.DbUpdateException" "valor nulo para miembro no anulable. ..? Miembros: 'alta'" una variable está completamente lleno y estadísticas de objetos en ella lo que está mal

enter image description here enter image description here

+0

Oh, estoy muy lejos de la programación ahora, gracias por notificar acerca de EF5 :) +1 –

+2

¿Has añadido el objeto de estadísticas al contexto? – Mac

Respuesta

Cuestiones relacionadas