biz*_*zon 6 code-first entity-framework-4 ef-code-first c#-4.0
我有两个由代码生成的简单类.
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; }
...
}
Run Code Online (Sandbox Code Playgroud)
在数据库中保存公司后,我有公司(Id = 1 | name ="blah"| AddressId = 1)及其地址(Id = 1,Country ="Poland").当我尝试从我的DbContext加载时:
Company company = context.Companies.Find(id);
Run Code Online (Sandbox Code Playgroud)
我得到公司与null地址属性.我究竟做错了什么?
(我正在使用CTP5.)
试试这个:
Company company = context.Companies.Include("Address").Find(id);
Run Code Online (Sandbox Code Playgroud)
或使用新的类型语法:
Company company = context.Companies.Include(c => c.Address).Find(id);
Run Code Online (Sandbox Code Playgroud)
这告诉EF急切地将Address实体加载为您Company实体的一部分.
您似乎还在EF上安装了存储库层 - 确保您的存储库实现支持(Include()如果是这种情况).
对于初学者来说,这是Include()Julia Lerman在"编程实体框架"中提供的实现,以支持使用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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3667 次 |
| 最近记录: |