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语句冲突与外键约束 “FK_Transactions_Orders_OrderId”。冲突发生在数据库 “Transactions”,表“dbo.Orders”,列'Id'。
我究竟在做什么错在这里?
你是对的。谢谢 – Elena 2012-04-26 13:49:45