Как мне получить Entity Framework для инициализации коллекций на вновь созданных объектах? - PullRequest
8 голосов
/ 12 мая 2011

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

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

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

Запись сущности выглядит следующим образом:

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

Полные сущности вBitbucket: Post и Tag .Весь код на http://code.dantup.com/blog

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

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

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

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

1 Ответ

6 голосов
/ 12 мая 2011

С сущностями POCO и EF я обычно инициализирую коллекцию в конструкторе.И я предпочитаю ISet, а не ICollection; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...