イニシャライザを使用してDBを設定しようとすると、いくつか問題が発生します。私はLabTest-> LabValue < -LabIndicator、3つのテーブルをしましたが、これは私がそれをコーディングする方法である:MVC 3、EF4、コードの最初のデータベースイニシャライザエラー
public class SummumnetDB : DbContext
{
public DbSet<LabIndicator> LabIndicators { get; set; }
public DbSet<LabTest> LabTests { get; set; }
public DbSet<LabValue> LabValues { get; set; }
public class MyFirstInitializer : DropCreateDatabaseIfModelChanges<SummumnetDB>
{
protected override void Seed(SummumnetDB context)
{
new List<LabTest>
{
new LabTest{ ApplicationDate = DateTime.Now},
new LabTest{ ApplicationDate = DateTime.Now},
}.ForEach(l => context.LabTest.Add(l));
new List<LabIndicator>
{
new LabIndicator{ Name="CHOLESTEROL", Description = "Cholesterol lvl"},
new LabIndicator{ Name="HEMOGLOBIN", Description = "Hemoglobin lvl"},
new LabIndicator{ Name="GLUCOSE", Description = "Glucose lvl"},
}.ForEach(l => context.LabIndicators.Add(l));
new List<LabValue>
{
new LabValue{ LabTestID = 1, LabIndicatorID = 1, Value = 2.3m },
new LabValue{ LabTestID = 1, LabIndicatorID = 2, Value = 5.8m },
new LabValue{ LabTestID = 1, LabIndicatorID = 3, Value = 5.2m },
new LabValue{ LabTestID = 2, LabIndicatorID = 1, Value = 6.7m },
new LabValue{ LabTestID = 2, LabIndicatorID = 2, Value = 9.8m },
new LabValue{ LabTestID = 2, LabIndicatorID = 3, Value = 4.3m },
}.ForEach(l => context.LabValue.Add(l));
base.Seed(context);
}
}
もの:
public class LabTest
{
public int ID { get; set; }
public DateTime ApplicationDate { get; set; }
public virtual ICollection<LabValue> LabValues { get; set; }
}
public class LabValue
{
public int ID { get; set; }
public decimal Value { get; set; }
public int LabTestID { get; set; }
public int LabIndicatorID { get; set; }
public virtual LabTest LabTest { get; set; }
public virtual LabIndicator LabIndicator { get; set; }
}
public class LabIndicator
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<LabValue> LabValues { get; set; }
}
これは私が私のDBContextで私のDbの初期化子をコード化する方法であります私はそれを実行すると、EFは、データベースを作成しようとすると、私はこのエラーが表示されます:
INSERTステートメントは、FOREIGN KEY制約 "LabIndicator_LabValues"と競合しました。競合はデータベース "SummumnetDB"、テーブル "dbo.LabIndicators"、列 'ID'で発生しました。 ステートメントが終了しました。どうもありがとうございます。
へ
は、私はSQL Serverに移動して、挿入を行った場合は、手動でも問題はありません、それが正常に行われていますもちろんEFはデータベースの構造を正常に作成します。 dbを作成しても、それでもモデルバインダーを作成する必要がありますか?、thanxs;) –