Как мне создать два связанных объекта одновременно с EF4 Code-First

Итак, у меня есть 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 вызывает другие проблемы, и почти нет руководств по первому коду для такого принудительного запуска.

Итак, как лучше всего справиться с этой ситуацией?

5
задан KallDrexx 18 February 2011 в 01:04
поделиться