我有一个基本上将文件存储在服务器上并在数据库中记录详细信息的应用程序。另一个应用程序每天运行以查找“孤立”文件。包含详细信息的表有 2 列(与此相关)TransId
和 SurvId
。这些文件保存在一个文件夹结构中,其中许多 SurvId
包含在 TransId
中:
C:\Files\23\1
C:\Files\23\2
C:\Files\23\3
C:\Files\23\4
C:\Files\24\1
C:\Files\24\2
C:\Files\24\3
我现在需要做的是检查这些是否存在于数据库中。数据访问是通过 WCF Web 服务进行的,该服务使用 EF 查询数据库。
所以我能看到的第一个选项是调用网络服务并返回列表或唯一记录 TransId、SurvId
,遍历文件夹并在列表上使用 Linq 来检查它们是否存在。
第二个选项是遍历文件夹并单独调用 Web 服务以检查是否存在。
此过程在系统没有用户负载时运行一整夜。选项 1 意味着对 Web 服务的一次调用,但可能会返回 200K 或更多记录的列表。第二个返回一个 bool 值,但意味着 Web 服务可以被调用 20 万次(或更多)。
我想第三种选择是将两者分开,并为每个 TransId
调用网络服务。
无论如何,我正在尝试每种方法,但在选项 1 上遇到了这个问题....
我在网络服务中的方法:
public List<MyFolderCheck> GetTransSurvids()
{
List<MyFolderCheck> response = new List<MyFolderCheck>();
var DbContext = new MyDataStorageEntities();
var dataset =
(from recordset in DbContext.MySurvs
select new MyFolderCheck
{
transId = recordset.TransactionId,
survId = recordset.SurvId
}).ToList();
response = dataset;
return response;
}
对此的调用返回列表中正确数量的元素,但我只能看到 TransId
最佳答案
returns the correct number of elements in the list but I can only see TransId
您似乎忘记了用 [DataMember]
属性修饰 MyFolderCheck
中的 survId
。服务器上的数据是正确的,但如果只有 transId
有一个 [DataMember]
,你会看到空的 survId
接收端。
关于c# - 从 EF 返回 2 列的自定义列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22043874/