2016-05-22 3 views
1

Ich habe ein Projekt, das Entity Framework Code First verwendet und ich führe den Einfügefehler "Kann den Wert NULL nicht in die Spalte einfügen". Hier ist mein CodeDer Wert NULL kann nicht in die Spalte eingefügt werden. EF Code First

[Table("Foo")] 
public class Foo 
{ 
    [Key] 
    public int FooId { get; set; } 
    public string Name { get; set; } 

    public virtual List<Bar> Bar { get; set; } 
} 

[Table("Bar")] 
public class Bar 
{ 
    [Key, Column(Order = 0), ForeignKey("Foo")] 
    public int FooId{ get; set; } 

    [Key, Column(Order = 1), DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int BarId { get; set; } 
    public DateTime Date { get; set; } 

    public virtual Foo Foo { get; set; } 
} 

Und ein Insert-Methode, die AutoMapper verwendet eine Dto in Foo Unternehmen abzubilden.

public bool Insert(Foo obj) 
    { 
     Foo newFoo = this.MapFooEntity(obj); 
     this._context.Foo.Add(newFoo); 
     this._context.SaveChanges(); 
     return true; 
    } 

Die Foo Objekt AutoMapper erzeugt haben keine Probleme, es generieren Foo mit FooId = 0 und jedes Kind (Bar) mit BarID = 0. Meiner Ansicht nach sollte die EF sehen haben, dass BarID = 0 und hänge die nächste Identität ID an, aber ich bekomme diesen Fehler. Was sind deine Gedanken Jungs?

+0

Wo und welche Zeile löst Ausnahme aus? Beim Hinzufügen von Bar oder Foo? –

Antwort

1

Bitte versuchen Sie die folgenden Änderungen an Ihrem Code:

In der Klasse Bar, [ForeignKey("FooId")] vor

setzen
public virtual Foo Foo { get; set; } 

und setzen [InverseProperty("Foo")] vor

public virtual List<Bar> Bar { get; set; } 

in Klasse Foo.

Verwandte Themen