using(var database = new MyDbContext()) {
MyModel myModel = database.Where(m => m.SomeProperty == someValue);
myModel.SomeOtherProperty = someOtherValue; //user changed a value
database.MyModels.Add(myModel); //even though the ID of myModel exists in the database, it gets added as a new row and the ID gets auto-incremented
database.SaveChanges()
}
是否添加了Rows与新ID的关系?
例如,如果我有 tbl_order 并且 tbl_order_details 中有一些子项,如果我通过上面的代码克隆它,是否会添加带有新ID的tbl_order_details行?
我在这里找到了这个解决方案:Entity Framework 6: Clone object except ID 但这里没有解释关系
答案 0 :(得分:0)
此代码示例:
public void CloneOrder(int orderId)
{
using (var database = new MyDbContext())
{
Order order = db.Orders.Find(m => m.Id == orderId);
var newOrder = new Order{
Content = order.Content
}
database.Orders.Add(newOrder);
OrderDetail orderDetail = new OrderDetail{
OrderId = newOrder.Id,
Content = order.OrderDetails.Content
};
database.OrderDetails.Add(orderDetail);
database.SaveChanges();
}
}
答案 1 :(得分:0)
在您的示例中,您的新行将被添加,与原始值不同的ONLY值将是它的id列。如果它们是具有外键关系的其他列,则它们的值将完全相同(也不会自动递增)。如果添加一行,则只添加一行,后台将不会创建其他行。克隆行时,EF不会使外键值无效(除非你告诉它)