我有一个模型实体框架6添加外键
public class Order
{
[Key]
public int ID { get; set;}
public string Name { get; set; }
}
public class Consumer
{
public virtual List<Order> Orders { get; set;}
}
当你创建一个Consumer
对象和参考现有Order
我的问题是,有没有办法只有通过订单ID,并允许实体框架休息。
我能得到它的工作的唯一办法是:
//Look up order
var order = dbContext.Order.Where(x=>x.ID == orderID)
var consumer = new Consumer { new List{ order} };
dbContext.Consumer.Add(consumer);
有没有办法做到这一点没有抬头的顺序?只需插入订单密钥的例子?事情是这样的:
var consumer = new Consumer {
new List {
new Order { ID = orderID }
}
};
dbContext.Consumer.Add(consumer);
注:最大的区别是,我只是通过“单编号”,并没有真正通过整个Order
对象。
更新:
public class Order
{
[Key]
public int ID { get; set;}
public string Name { get; set; }
public virtual List<Order> InheritedOrders{ get; set;}
}
在DbContext
:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<EntityClass>().HasMany(x=>x.InheritedOrders).WithMany().Map(cs =>
{
cs.MapLeftKey("ParentID");
cs.MapRightKey("ChildID");
cs.ToTable("OderInheritance");
});
}
在这种情况下,如何将它,因为你参考同YPE的目标工作,并使用一个自动生成的WithMany
产生表?
感谢, d
是的,将'new Order {ID = orderID}'作为'Unchanged'添加到上下文中。 –
你是什么意思的“Uncahnged”。我试过这样做,并且从未创建关系 – darewreck