控制
附件
附件
控制
通过FK(可以有许多附件)。
附件
通过linq,
控制
我有一个控件视图(MVC),其中显示了很多信息,包括现有附件的列表。该列表通过助手方法完成:
public static string FileBox(this HtmlHelper helper, string name, IEnumerable<Models.Attachment> files, bool writable)
{ ... }
此函数循环遍历附件并写出带有附件名称的无序列表。
我偶尔会遇到超时错误,下面是该错误的一个片段:
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
...
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
at System.Data.Linq.EntitySet`1.Load()
at System.Data.Linq.EntitySet`1.GetEnumerator()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at IRSoxCompliance.Helpers.Html.FileBox(HtmlHelper helper, String name, IEnumerable`1 files, Boolean writable) in C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\IRSoxCompliance\IRSoxCompliance\IRSoxCompliance\Helpers\Html.cs:line 228
at ASP.views_edit_control_edit_test_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\inetpub\wwwroot\Views\Edit\Control_Edit_Test.aspx:line 109
...
所以。。。
-
假设这些超时是由于控件已经加载,而
行是延迟加载的,并且仅从辅助对象加载?这主要是因为我正在获取我不需要的50MB数据?
-
a) 我想避免把桌子劈开。
b) 我是否可以在控件上创建一个AttachmentsNoBinary部分属性,该属性返回一个新类,该类包含除二进制以外的所有内容?
c) 看来我可以在二进制列上启用“延迟加载”。这样行吗?如果是这样的话——我已经强调了不改变DBML中的任何内容,因为我有清除表然后重新加载的习惯。所以我会失去这个设置。有没有办法确保我不会把它弄丢?我可以从我的部分设置吗?或者可能是一个可以断言它已打开的单元测试?
解决方案
:根据答案,我意识到:
foreach (Attachment file in controls.Attachments) {
response.write(file.name);
}
foreach (string filename in controls.Attachments.Select(a => a.name)) {
response.write(filename);
}
虽然我最终推迟了加载varbinary列,希望在重置dbml文件时不要忘记再次设置该选项。
谢谢,