Итак, у меня есть 2 объекта, Post
и PostHistory
. Всякий раз, когда я создаю или редактирую сообщение, я хочу создать его точную копию как PostHistory
, чтобы регистрировать все изменения, внесенные в сообщение. Скажем, объект post имеет следующее определение:
public class Post
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<PostHistory> PostHistory{ get; set; }
}
Проблема возникает, когда я создаю свой первый Post
. Например, если я попробую следующее:
Post post = new Post { Text = "Blah" };
context.Posts.Add(post);
PostHistory history = new PostHistory { Text = "Blah"};
context.PostHistory.Add(history);
post.PostHistory.Add(history);
Это не удастся, потому что, поскольку и post
, и history
являются новыми объектами, Post.PostHistory
имеет значение null из-за этого. еще не инициализирован. Единственный способ сделать это - сначала зафиксировать сообщение
в базе данных, затем зафиксируйте историю
в базе данных, но я не понимаю, почему для этого необходимо выполнение двух отдельных вставок.
Если у меня есть конструктор, который инициализирует ICollection
как List
все работает нормально, но принудительная реализация в List
вызывает другие проблемы, и почти нет руководств по первому коду для такого принудительного запуска.
Итак, как лучше всего справиться с этой ситуацией?