从EF返回2列的自定义列表

时间:2014-02-26 14:08:58

标签: c# wcf entity-framework

我有一个应用程序,它基本上将文件存储在服务器上,并在数据库中记录详细信息。另一个应用程序每天运行以查找“孤立”文件。包含详细信息的表格包含2列(与此相关)TransIdSurvId。这些文件保存在文件夹结构中,其中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

1 个答案:

答案 0 :(得分:1)

  

返回列表中正确数量的元素,但我只能看到TransId

您似乎忘了使用survId属性在MyFolderCheck中装饰[DataMember]。服务器上的数据是正确的,但如果只有transId上有[DataMember],那么您会在接收端看到空survId