Скажем, у меня есть 2 сущности, Post
и PostHistory
. Всякий раз, когда я создаю или редактирую сообщение, я хочу создать его точную копию как PostHistory
для регистрации всех изменений, внесенных в сообщение. Скажем, сущность сообщения имеет следующее определение:
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
является нулевым, поскольку он еще не был инициализирован. Единственный способ, которым я могу это сделать, - это сначала зафиксировать post
в базе данных, затем зафиксировать history
в базе данных, но я не понимаю, почему для этого необходимо выполнить 2 отдельных вставки.
Если у меня есть конструктор, который инициализирует ICollection
в List<T>
, то все работает нормально, но принудительная реализация к List<T>
вызывает другие проблемы, и почти никакие учебные пособия по коду не выполняют эту принудительную инициацию.
Так, как лучше всего справиться с этой ситуацией?