1
私は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();
は私が
FOREIGN KEY制約 "FK_Transactions_Orders_OrderId" と競合INSERT文
を取得します。競合がデータベース "トランザクション"、テーブル "dbo.Orders"、列 'Id'で発生しました。
私は正確にここで間違っていますか?
あなたは正しいです。ありがとう – Elena