[英]foreign key entity framework issue
我有一个亲子实体:
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 );
当我尝试创建Transaction类型的新实体时,类似:
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”冲突。 数据库“事务”表“ dbo.Orders”的“ Id”列中发生了冲突。
我到底在做什么错?
我认为在添加事务之前,需要先将Order对象显式添加到ctx对象。 这样,当您调用.SaveChanges()
,上下文将知道在提交事务之前必须先提交订单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.