gpt4 book ai didi

c#-4.0 - Entity Framework - Code First 不加载引用的对象

转载 作者:行者123 更新时间:2023-12-03 22:22:22 26 4
gpt4 key购买 nike

我首先有两个由代码生成的简单类。

public class Company
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Address Address { get; set; }
}

public class Address
{
public int Id { get; set; }
public string Country { get; set; }
...
}

在数据库中保存 Company 后,我有 Company (Id = 1 | name = "blah"| AddressId = 1) 及其地址 (Id = 1, Country = "Poland")。当我尝试从我的 DbContext 加载时:
Company company = context.Companies.Find(id);

我得到了空地址属性的公司。我究竟做错了什么?

(我正在使用 CTP5。)

最佳答案

尝试这个:

Company company = context.Companies.Include("Address").Find(id);

或使用新的类型语法:
Company company = context.Companies.Include(c => c.Address).Find(id);

这告诉 EF 急切地加载 Address实体作为您的一部分 Company实体。

似乎您在 EF 之上还有存储库层 - 确保您的存储库实现支持 Include()如果是这样的话。

对于初学者来说,这是 Include() 的实现Julia Lerman 在“Programming Entity Framework”中提供的支持带有 POCOS 的单元可测试存储库模式(此版本仅适用于第一种语法):
public static IQueryable<TSource> Include<TSource>(this IQueryable<TSource> source, string path)
{
var objectQuery = source as ObjectQuery<TSource>;
if (objectQuery != null)
{
return objectQuery.Include(path);
}
return source;
}

关于c#-4.0 - Entity Framework - Code First 不加载引用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5385248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com