私は1つの親子エンティティを持っています:
public class Transaction
{
public int TransactionId {get; set;}
public int? OrderId {get; set;}
public virtual Order Order {get; set;}
}
public class Order
{
public int Id {get; set;}
public virtual List<OrderItems> OrderItems {get; set;}
}
public class OrderItem
{
public int Id {get; set;}
public string Item {get; set;}
public virtual int OrderId {get; set;}
public virtual Order Order {get; set;}
}
コンテキストは次のとおりです。
modelBuilder.Entity<Transaction>( )
.HasKey( x => x.TransactionId )
.ToTable( "Transactions" );
modelBuilder.Entity<Transaction>( )
.HasOptional( x => x.Order )
.WithMany( )
.HasForeignKey( t => t.OrderId );
modelBuilder.Entity<Order>( )
.HasKey( o => o.Id )
.ToTable("Orders");
modelBuilder.Entity<OrderItem>( )
.HasKey( i => i.Id )
.ToTable( "OrderItems" );
modelBuilder.Entity<OrderItem>( )
.HasRequired( x => x.Order )
.WithMany( o => o.OrderItems )
.HasForeignKey( p => p.OrderId );
トランザクション タイプの新しいエンティティを作成しようとすると、次のようになります。
var transaction = new Transaction
{TransactionId = Guid.NewGuid;
Order = new Order {OrderItems = new List<OrderItems>{Item="SunCream"}}};
と
ctx.Transactions.Add(transaction);
ctx.SaveChanges();
私は得る
INSERT ステートメントが FOREIGN KEY 制約 "FK_Transactions_Orders_OrderId" と競合しました。データベース「Transactions」、テーブル「dbo.Orders」、列「Id」で競合が発生しました。
ここで何が間違っているのですか?