Я пытаюсь заполнить свою базу данных некоторыми тестовыми данными с 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 (по умолчанию), , который, по-видимому, существует по этой причине ?