繁体   English   中英

延迟加载不使用Entity Framework 4.1的相关实体

[英]Lazy loading of related entities not working with Entity Framework 4.1

我们有一个使用Entity Framework 4.1 Code First进行数据存储的项目。 它的编码方式使EF在存储库模式之后抽象。 从存储库中获取实体时,会向数据集传递大量包含字符串,其中包括所有应包含的所有相关实体。 这将导致庞大的查询,即使数据库中没有数据,也可能需要10秒钟才能运行!

已经有很多使用存储库编写的代码来访问数据库,我需要在不破坏模式的情况下理想地提高性能。

我正在尝试进行更改,以便在搜索数据库时,不会将包含字符串传递到数据集(或仅将最小包含字符串)传递给数据集。 从数据库中获取实体时,它们的相关实体将在首次访问时通过延迟加载来加载。

我有一个名为Donation的类,其导航属性如下:

public virtual Employee Donor { get; private set; }

Donation和Employee类都有一个私有的无参数构造函数。 当使用包含字符串“ Donor”时,我可以获取捐赠列表,并且将它们与Donor一起返回。

当我从存储库中获取不包含include字符串的Donation时,Donor通常返回为null。 如果巧合的是,我以有关的Employee身份登录,则系统中其他位置的另一个查询将已经从Employee存储库中提取了Employee实体。 发生这种情况时,将在正确设置Employee的情况下返回捐赠! 因此,很显然,如果早先的查询已经提供了数据,则它们是“延迟加载”的。 但是总的来说,我不会已经询问过捐助者和所有其他实体。

谁能建议我可能做错了什么? 对不起,很长的问题。 如果需要,我可以发布更多的代码,但这是完全不同的。 提前致谢!

我相信,如果您遵循本页http://msdn.microsoft.com/zh-cn/library/dd468057.aspx上的指南,您应该得到想要的结果。 专门使您的无参数构造函数受到保护,应该会有所帮助。

但是请查看其余的指南。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM