間違った順序でデータベースに追加します。順序はどのように定義されていますか?EFコードファースト:私はコンテキストにいくつかの項目を追加しましたが、項目が追加されているので、私は、私は推測参照整合性エラーを取得していますDatabaseInitializerの「種子」メソッドのオーバーライドに播種項目について、インサートの注文
デシベルは、私がデータに何か問題がないと思うので、生成された後、私は生のSQLをDBに項目を追加することができます。
など。
new List<PropertyType>
{
new PropertyType {Name = "Text"},
new PropertyType {Name = "Colour"},
new PropertyType {Name = "Image"}
}.ForEach(e => context.PropertyTypes.Add(e));
base.Seed(context);
new List<Property>
{
new Property {Name = "font", PropertyTypeId = 1},
new Property {Name = "colour", PropertyTypeId = 2},
new Property {Name = "background-image", PropertyTypeId = 3}
}.ForEach(e => context.Properties.Add(e));
base.Seed(context);
私は最初のシードを単独で実行することができます。 2番目のシードで参照整合性エラーが発生します。全く単純な関係。インサートの
public class Property
{
[Key]
public int PropertyId { get; set; }
[Required, StringLength(100)]
public string Name { get; set; }
[Required]
public int PropertyTypeId { get; set; }
public PropertyType PropertyType { get; set; }
}
public class PropertyType
{
[Key]
public int PropertyTypeId { get; set; }
[Required, StringLength(50)]
public string Name { get; set; }
public IList<Property> Properties { get; set; }
}
'base.Seed'は何ですか? –
基本クラスのSeedの呼び出しです。私はそれを取り除こうとしました。違いはありません。私はどこかを読んで、それを呼び出すと上記のコードでエラーを捕まえることができると思っていますが、私はそうは思いません。 –
それはあなたの親クラスがどのイニシャライザであるかによって異なります。デフォルトの初期化子はこのメソッドを空にします。また、「第二の種」とはどういう意味ですか?その2つの部分は一緒に実行されていますか? –