Scolo Ответов: 2

UWP - entity framework core (dbcontext) доступ к подменю списка


Всем Привет,

У меня было много проблем с этим и я расследовал много-много часов, так что я полностью застрял.

Я следовал учебнику на странице:
Приступая к работе над магазина - Новая база данных - ядро эф | Майкрософт документы
Это делается для того, чтобы создать базу данных SQLite и иметь возможность использовать ее в UWP с EntityFrameworkCore.

Пока здесь все работает так, как задумано.
Но... Я не в состоянии использовать
public List<Post> Posts { get; set; }

Когда я пытаюсь использовать его, я получаю ошибку:
'Object reference not set to an instance of an object.'

Но я пытался инициализировать объект несколькими способами и не смог заставить его работать.

Я бы сказал, что очевидный подход заключается в следующем:
var blog = new Blog { Url = "theurl", Posts = new List<Posts>() };
db.Blogs.Add(blog);
var thebest = new Post{ Title = "MyTest"};
db.Blogs.SingleOrDefault(x => x.Url == "theurl").Posts.Add(thebest);


Но я нахожусь в петле ... :
'Object reference not set to an instance of an object.'


Я думаю, что проблема в том, что когда я использую SingleOrDefault или FirstOrDefault и т. д. и т. д., он возвращает ссылку? а не оригинал?
Как правильно использовать этот список внутри DbContext?

Что я уже пробовал:

Ищу и ищу в интернете.

Инициализируйте переменные несколькими различными способами.
var blog = new Blog { Url = "theurl", Posts = new List<Posts>() };
db.Blogs.Add(blog);
var thebest = new Post{ Title = "MyTest"};
db.Blogs.SingleOrDefault(x => x.Url == "theurl").Posts.Add(thebest);


var blog = new Blog { Url = NewBlogUrl.Text };
db.Blogs.Add(blog);
db.Blogs.SingleOrDefault(x => x.Url == NewBlogUrl.Text).Posts = new List<Post>();


Всегда одно и то же исключение.

Richard Deeming

Попробуйте пометить Posts собственность как virtual.

Scolo

Привет, Ричард, спасибо за ответ :)

пытался

public virtual List<Post> Posts { get; set; }

тот же вопрос
"Ссылка на объект не установлена на экземпляр объекта".

2 Ответов

Рейтинг:
14

#realJSOP

Коллекции в Entity Framework представлены следующим образом DbSet коллекции.


Scolo

Можете ли вы быть немного более конкретным, например, написать несколько строк кода, в которых вы добавляете объект в список? спасибо,

Рейтинг:
0

Richard Deeming

В соответствии с этим:

Ленивая загрузка еще не поддерживается ядром EF. Вы можете просмотреть ленивая загрузка элемента в нашем бэклоге[^] для отслеживания этой функции.

Вместо этого вам нужно будет использовать один из вариантов загрузки eager / explicit, показанных на этой странице.