C# 从EF返回包含2列的自定义列表
我有一个应用程序,基本上在服务器上存储文件,并在数据库中记录详细信息。另一个应用每天运行以查找“孤立”文件。保存详细信息的表格有两列(与此相关)C# 从EF返回包含2列的自定义列表,c#,wcf,entity-framework,C#,Wcf,Entity Framework,我有一个应用程序,基本上在服务器上存储文件,并在数据库中记录详细信息。另一个应用每天运行以查找“孤立”文件。保存详细信息的表格有两列(与此相关)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 我现在需要做的是检查数据库中是否存在这些文件。数据
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服务可以被调用20万次(或更多)
我想第三种选择是将两者分开,并为每个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;
}
public List GetTransSurvids()
{
列表响应=新列表();
var DbContext=新的MyDataStorageEntities();
变量数据集=
(来自DbContext.MySurvs中的记录集)
选择新建MyFolderCheck
{
transId=recordset.TransactionId,
survId=recordset.survId
}).ToList();
响应=数据集;
返回响应;
}
调用this返回列表中正确数量的元素,但我只能看到TransId
返回列表中正确数量的元素,但我只能看到TransId
看起来您忘记在
MyFolderCheck
中用[DataMember]
属性装饰survId
。服务器上的数据应该是正确的,但如果只有transId
上有[DataMember]
,您会在接收端看到空的survId
。表中有survId
数据吗?您是否有MySurv实体的正确映射?@SergeyBerezovskiy是TransId和SurvId在架构中都不为null。如果选择SSMS中的所有记录,则会填充两列。