我有一个应用程序,它基本上将文件存储在服务器上,并在数据库中记录详细信息。另一个应用程序每天运行以查找“孤立”文件。包含详细信息的表格包含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查询数据库。
因此,我可以看到的第一个选项是调用Web服务并返回列表或唯一记录TransId, SurvId
,遍历文件夹并使用列表上的Linq来检查它们是否存在。
第二个选项是遍历文件夹并单独调用Web服务以检查是否存在。
此过程在系统没有用户负载的情况下运行一夜。选项1表示对Web服务的一次调用,但可能会返回200K或更多记录的列表。第二个返回一个布尔值,但意味着可以将web服务调用200k次(或更多)。
我猜第三个选项是两者之间的分割,并为每个TransId
调用Web服务。
无论如何,我正在尝试每种方法,但在选项1上遇到了这个问题....
我在Web服务中的方法:
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
答案 0 :(得分:1)
返回列表中正确数量的元素,但我只能看到TransId
您似乎忘了使用survId
属性在MyFolderCheck
中装饰[DataMember]
。服务器上的数据是正确的,但如果只有transId
上有[DataMember]
,那么您会在接收端看到空survId
。