How do I get the Entity Framework to initialise collections on my newly-created entities?

Я пытаюсь заполнить мою базу данных тестовыми данными с помощью IDatabaseIntialiser следующим образом:

protected override void Seed(BlogDataContext context)
{
    // 
    var post = context.Posts.Create();
    post.Title = "My Life On Twitter";
    // 

    // Set tags
    post.Tags.Add(aspnetTag); // NullRefException
    post.Tags.Add(razorTag);

Сущность Post выглядит так: это:

public class Post
{
    // ...
    public virtual ICollection Tags { get; set; }

Полные объекты в Bitbucket: Сообщение и Тег . Весь код находится по адресу http://code.dantup.com/blog

Однако post.Tags имеет значение null, поэтому это не работает. Первоначально я создавал сообщение как new Post () , однако, поскольку я вызываю метод Create , предоставляемый EF, почему коллекция не инициализируется?

Это кажется неуклюжим для создания экземпляра моей собственной коллекции здесь, и если я сделаю это в конструкторе, предположительно каждый раз, когда я загружаю объект из EF, он Я создам коллекцию в конструкторе, а затем перезапишу ее коллекцией, содержащей фактические данные из БД?

Есть ли способ указать EF создать мне объект, включая коллекции / прокси для моих ICollections (предполагая, что ICollection - правильный выбор)?

Edit : context.Configuration.ProxyCreationEnabled имеет значение true (по умолчанию), , похоже, существует по этой причине ?

8
задан CraigTP 6 March 2013 в 09:21
поделиться