实体框架 - 浅层渴望加载?

时间:2015-08-31 20:41:13

标签: c# entity-framework serialization entity-framework-6 eager-loading

是否有可能急切地加载相关实体,但是没有加载相关实体的相关实体?

就我而言,我有一组标志来确定应该加载哪些相关实体:

[Flags]
public enum FooRetrievalOptions
{
    None = 0,
    Bar = 1,
    Baz = 2,
    All = Bar | Baz
}

我创建了一个IQueryable< Foo>并且依赖于已经设置的标志。

IQueryable<Foo> query = context.Foos;

if (fooRetrievalOptions.HasFlag(FooRetrievalOptions.Bar))
{
    query.Include(f => f.Bar);
}

if (fooRetrievalOptions.HasFlag(FooRetrievalOptions.Baz))
{
    query.Include(f => f.Baz);
}

List<Foo> foos = query.ToList();

这个问题是它可以在序列化时创建循环,具体取决于Bar和Baz上的导航属性。

我只想在一个数据库命中中加载关联的实体,而不加载它们自己的相关实体。这可能吗?

1 个答案:

答案 0 :(得分:0)

创建数据传输对象(DTO)并将所需的值复制到该数据传输对象中,然后再将其传递给序列化。在开发API以帮助处理EF循环引用并且仅返回消费者所需的内容时,这样做是很常见的。

编辑:关于所有属性看似乏味的手动映射,有一些解决方案可以帮助解决这个问题,例如Automapper:http://automapper.org/

相关问题