我有一個模型實體框架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