asp.net – 如何防止Entity Framework将FileStream列加载到字节
我正在开发一个文件存储应用程序,我们已将FileStream类型合并到我们的数据库中.该系统有望支持大型文件.应用程序的一部分允许批量上载多个文档.然后,这些文档必须链接到系统内的其他实体.
一个页面旨在显示未链接的文档,以允许用户将文档一次链接到实体.在对上载过程进行一些负载测试之后,我们发现在加载此Unlinked Documents页面时,ASP.NET辅助进程的内存占用量超过了GB. 经过调查,似乎Entity Framework正在为数百个未链接的文档加载整个文档行实体(包括FileStream,转换为字节数组).在我的存储库类中,我在转换为模型时不保存此字节数组,但到那时为时已晚. EF花费了时间和内存来将字节数组分配到Repository类表示中. 有没有办法告诉EF不要加载这个字节数组,除非我明确要求它? 解决方法
驻军,
您可以使用名为“实体拆分”的功能,将两个相关实体映射到单个表.因此,在第一个实体中,您将拥有除filestream属性之外的所有实体.在第二个实体中,您将拥有主键(与第一个实体中的相同)和filestream属性.在模型中的实体之间创建一个一个关系,然后将两个实体映射到同一个表.现在,具有文件流的实体是相关的,您可以根据需要加载或延迟加载它.唯一的缺点是它不是您的主要实体的属性,因此您必须导航到相关实体,然后导航到属性. myEntity.MyRelatedEntity.TheFileStreamProperty 这是我写的old blog post,它展示了如何在EDM Designer中执行此操作. 您还可以使用Code FIrst实现相同的映射.这是我写的MSDN文章,其中包含实体拆分文章. http://msdn.microsoft.com/en-us/data/hh272551 HTH朱丽叶 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – IApplicationBuilder.New()的目的是什么?
- asp.net-mvc – 如何在backbone.js中保存模型集合?
- 我们可以将asp.net mvc 4应用程序部署到带有Windows容器的d
- asp.net – Windows身份验证会话超时
- asp.net-mvc-3 – MVC3 Html.EditorFor在我的视图中不渲染任
- asp.net-mvc – 如何限制对MVC 5中某些视图和操作的访问?
- asp.net – 使用Wopi和Office Online Server在Word中编辑
- 如何在没有布局页面的情况下将部分脚本添加到asp.net mvc R
- asp.net-mvc – 实现Rss Feeds的安全性
- asp.net-mvc-4 – 使用活动目录角色提供者MVC4进行授权
- Asp.Net Core 发布到 Docker(Linux Centos 虚拟
- asp.net – 您在实施/使用WebDAV方面有哪些经验?
- asp.net – 我可以使用构造函数动态创建用户控件
- asp.net-mvc – 为dnx rc2运行MVC 6 ASP.NET 5本
- asp.net – ASHX httpHandler检测到一个潜在危险
- asp-classic – 我使用经典的ASP,IIS6和WinServe
- asp.net-core – ASPNetCore – 通过REST上传文件
- asp.net – 为本地化设置TemplateField HeaderTe
- asp.net-mvc – 如何更好地控制DotNetOpenAuth如
- asp.net中MVC借助Iframe实现无刷新上传文件实例