c# - 从 EF 返回 2 列的自定义列表

标签 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 查询数据库。

所以我能看到的第一个选项是调用网络服务并返回列表或唯一记录 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/

相关文章:

wcf - 在控制台中托管简单的 Wcf 服务

wcf - 如何将对象列表转换为流

c# - 如何从客户端请求中获取 X509Certificate

c# - 如何让 Effort 与 EntityFramework 一起工作?

c# - 如何正确比较主机名

c# - 为什么 typeof(T).IsEnum 返回 true,即使文档说它应该始终返回 false?

c# - Linq to Xml 仅打印第一个后代值

c# - 无法从 xml 文件中获取数据

c# - 如何在不枚举查询的情况下将 string 转换为 int

c# - Light在 MVC 中注入(inject)数据库上下文