如何从数据库中选择数据并通过WCF服务返回?

时间:2016-06-29 22:59:56

标签: sql asp.net-mvc wcf dapper

我有一个存储过程从数据库中获取FilenamePath(2列)。我需要创建一个WCF服务,将数据返回到一种格式,使用该服务的任何应用程序都可以使用List<string>或类似的东西。

最好的方法是什么(设计和实施方式)?

这是我尝试通过Dapper ORM进行的操作,但我不确定它是否会按预期工作。

public IEnumerable<dynamic> RetrieveIncompletedFiles(int type)
{
    try
    {
        using (_connection = new SqlConnection(_sqlConnectionString))
        {
            _connection.Open();
            var files = _connection.Query("SelectIncompletedFilesByFiletypeFromAsyncFileProcessingQueue", new { Filetype = type }, commandType: CommandType.StoredProcedure);
            return files;
        }
    }
    catch (Exception ex)
    {
        return null;
    }
}

2 个答案:

答案 0 :(得分:2)

这几乎肯定不会按预期工作。 WCF希望针对已知架构和简单数据类型工作,通常为List<SomeType>,其中SomeTypepublic类,标记为[DataContract] [DataMember]元素。幸运的是,这个小巧的部分应该像以下一样简单:

 public List<SomeType> RetrieveIncompletedFiles (int type)
{
    using (connection = new SqlConnection(_sqlConnectionString))
    {
        return connection.Query<SomeType>("SelectIncompletedFilesByFiletypeFromAsyncFileProcessingQueue", new { Filetype = type }, commandType: CommandType.StoredProcedure).AsList();
    }
}

答案 1 :(得分:0)

编辑:我终于在客户端的参考资料上苦苦挣扎之后使用上面的代码了。我不得不配置服务参考设置。我不得不将集合类型从数组更改为列表,并取消选中&#34;重用引用&#34;,如果我没有取消选中,我在Reference.cs中遇到了很多错误,这使得工作变得很麻烦在客户端。

List<AsyncFileProcessorService.FilenameAndPath> filenameAndPaths = processor.RetrieveIncompletedFiles(filetype);