Я использовал EF (теперь с 6.1.1) в течение соответствующего времени. Но каждый раз, когда мне нужно работать с несколькими объектами внутри контроллера (используя MVC), я теряю себя.Управление сущностью объекта Entity Framework Confusion
Государственное управление сущностями вызывает у меня большое замешательство, и, когда я думаю, что понимаю операцию, возникает еще один сюрприз.
Например (моя текущая путаница):
У меня есть следующие классы:
public class A
{
public int Id { get; set; }
public C c { get; set; }
}
public class B
{
public int Id { get; set; }
public C c { get; set; }
}
public class C
{
public int Id { get; set; }
public string anotherProperty { get; set; }
}
И у меня есть контроллер:
[HttpPost]
public void CopyEntityAction(A a){
var b = new B() {
c = a.c // <== here is the problem
};
db.Bs.Add(b);
}
То, что я хочу сделать, это скопировать (создать другой объект) C от A до B, а не ссылку на тот же C.Id
Как я могу достичь Это?
Спасибо за ваше время
* Я думаю, что нечто EF может позаботиться автоматически
Edit 1
Я тоже попытался это:
[HttpPost]
public void CopyEntityAction(A a){
var b = new B();
var c2 = a.c;
db.Entry(c2).State = EntityState.Added;
b.c = c2;
db.Bs.Add(b);
db.SaveChanges();
}
Привет, SethMW, спасибо за ваше предложение, но я думаю, что когда вы отмечаете объект с «EntityState.Added», он игнорирует Id и создает новый ... нет? – Oswaldo
Ничего себе, где парень с 3-м ответом, что Mangioned Automapper? Мне тоже понравилось его предложение. Он удалил ответ :( – Oswaldo
AutoMapper помог бы, если бы у вас было много дополнительных свойств для сопоставления при копировании сущностей или их сопоставлении с ViewModels и т. Д. Если у вас действительно есть только пара, это может не стоить накладных расходов. – SethMW