EF:加载相关实体惰性方式不起作用

艳丽的

我哪里错了?我收到NullReferenceExeption了Navigation属性Events它被标记为virtualLazyLoadingEnabled并被明确允许。

程序代码:

using (var db = new Db())
{
    var person = new Person();
    person.Name = "bla bla";
    db.Persons.Add(person);
    person.Events = new List<Event>(1);
    person.Events.Add(new Event() { Description = "ABC", At = DateTime.Now });
    db.SaveChanges();
}

using (var db = new Db())
{
    var person = db.Persons.First();

    Console.WriteLine(person.Events == null);  //Output: True
    Console.WriteLine(person.Events.Count);    //System.NullReferenceException
}

显式加载工作:

var person = db.Persons.First();
db.Entry(person).Collection(p => p.Events).Load();
Console.WriteLine(person.Events == null);  //Output: False
Console.WriteLine(person.Events.Count);    //1

类结构:

class Db : DbContext
{
    public Db()
    {
        Database.SetInitializer(new DropCreateDatabaseAlways<Db>());
        Configuration.LazyLoadingEnabled = true;
    }

    public DbSet<Person> Persons { get; set; }
    public DbSet<Event> Events { get; set; }
}

class Person
{
    public int id { get; set; }
    public string Name { get; set; }

    public virtual List<Event> Events { get; set; }
}

class Event
{
    public int id { get; set; }
    public DateTime At { get; set; }
    public string Description { get; set; }

    public Person Person { get; set; }
    public int PersonId { get; set; }
}
理查德

您的模型类需要是公共的才能延迟加载。更改为class Personand class Eventbe public class Personetc,然后您的测试程序将开始工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试访问相关实体时,延迟加载不起作用

来自分类Dev

实体框架延迟加载不起作用

来自分类Dev

实体框架6延迟加载不起作用

来自分类Dev

实体框架6-延迟加载不起作用

来自分类Dev

EF代码优先延迟加载不起作用

来自分类Dev

EF核心:加载相关实体-循环依赖

来自分类Dev

EF-相关实体未加载

来自分类Dev

在 EF6 中加载相关实体

来自分类Dev

JPA惰性抓取不起作用,并引发LazyInitializationException

来自分类Dev

actionListener commandLink在惰性dataScroller上不起作用

来自分类Dev

EF核心属性值转换在派生实体配置中不起作用

来自分类Dev

HTML加载不起作用

来自分类Dev

加载动画不起作用

来自分类Dev

加载密钥不起作用

来自分类Dev

重新加载不起作用

来自分类Dev

路径相关类型示例不起作用

来自分类Dev

实体框架6:类为内部时,延迟加载不起作用

来自分类Dev

C#-首先使用实体框架代码,延迟加载不起作用

来自分类Dev

使用Include加载相关数据实体ef Core 3.1

来自分类Dev

EF6渴望加载相关实体的单个属性

来自分类Dev

实体框架更新不起作用

来自分类Dev

休眠保存实体不起作用

来自分类Dev

实体框架导航属性不起作用

来自分类Dev

实体框架 - LINQ JOIN 不起作用

来自分类Dev

实体框架 ConnectionString 不起作用

来自分类Dev

excludeFromIndexes: [] 不起作用。实体属性仍被索引

来自分类Dev

WebBrowser快捷方式在Outlook加载项中不起作用。WebBrowserShortcutsEnabled为true

来自分类Dev

如何结合使用“ AsNoTracking”方法在EF Core中加载实体和显式加载相关实体

来自分类Dev

EDMX EF 6.0的DataAnnotations不起作用