我有一个存储过程从数据库中获取Filename
和Path
(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;
}
}
答案 0 :(得分:2)
这几乎肯定不会按预期工作。 WCF希望针对已知架构和简单数据类型工作,通常为List<SomeType>
,其中SomeType
是public
类,标记为[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);