2016-05-15 2 views
0

могли бы вы сказать мне, если у меня есть некоторый код, как это:Entity Framework 6: объект Clone и отношения, за исключением ID

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() 
} 

это добавить отношение Ряды с новыми идентификаторами?

для примера, если у меня tbl_order и она имеет некоторые Childs в tbl_order_details, если я клонировать, что в коде выше, это добавить tbl_order_details строк с новыми идентификаторами?

Я нашел это решение здесь: Entity Framework 6: Clone object except ID, но здесь не объяснить об отношениях

+1

Возможный дубликат [Entity Framework 6: объект Clone except ID] (http://stackoverflow.com/questions/25720803/entity- framework-6-clone-object-except-id) – Pouria

+0

У меня вопрос. Что значит «MyModel - tbl_order» и «MyModels - tbl_order_details»? –

+0

@LinhTuan У меня есть таблица, называемая tbl_order, и она имеет много общего с tbl_order_details. –

ответ

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(); 
     } 
    } 
+0

Вы уверены, что сущность 6 не добавляет строки отношений автоматически? –

+0

Я обновил его. 100% это работает –

+0

@ LinhTuan, вам очень приятно попробовать и ответить на вопросы. Однако, пожалуйста, убедитесь, что в вопросе указаны критерии, которые вы выполняете в своем ответе, или попросите человека, который просит отредактировать вопрос и включить любые такие критерии. Эта практика гарантирует, что другие, сталкивающиеся с подобной проблемой, смогут найти вопрос и использовать ваш ответ в своих интересах. Кроме того, избегайте ответа на вопросы, отмеченные как дубликаты, если только они не были выяснены. Благодарю. – Pouria

0

В вашем примере будет добавлен ваш новый ряд , значение ONLY, которое будет отличаться от оригинала, будет его столбцом id. Если бы они были другими столбцами, у которых были отношения с внешним ключом, их значения были бы полностью одинаковыми (а не автоматически увеличивались). Если вы добавите одну строку, будет добавлена ​​только одна строка, в фоновом режиме не будет создания дополнительных строк. EF не будет игнорировать значения внешнего ключа при клонировании строки (если вы не сообщите об этом)

+0

вы неправильно поняли мой вопрос, я хочу клонировать данные и добавлять их в качестве новой записи. –

Смежные вопросы