gpt4 book ai didi

c# - 通过 WCF 服务返回 MySqlDataAdapter 列表导致错误

转载 作者:行者123 更新时间:2023-11-29 08:30:54 25 4
gpt4 key购买 nike

所以我正在开发一个客户端-服务器应用程序,它利用 MySQL 数据库并对其进行读取/写入。一切都运行得很好,直到我将以下方法添加到我的 WCF 服务接口(interface) 中。

[OperationContract]
List<MySqlDataAdapter> ShowTables();

将其添加到服务契约(Contract)时,scvutil.exe 将失败并指出服务器由于内部错误而无法处理请求。

现在我读过这个问题:Issue while returning Dataset through WCF Service我很好奇它与我的问题有多么密切的关系。我知道返回 DataSet 不是正确的方法,但到底是什么导致了此错误,以及将此信息返回给客户端的明智替代方案是什么?

感谢您的时间、考虑和帮助。

最佳答案

为了回答您的问题,转换器很可能无法成功地将 MySqlDataAdapter 转换为正确的(极其迟钝的)XML 对象。即使你不想使用它,处理数据的性能影响也不会扩展(并且可能无法达到可接受的标准),不能被 .NET 以外的任何其他东西使用,并且会直接绑定(bind)你的 UI 层到数据库对象及其实现。这对于 WCF 来说并不是一个好的开始。

我不确定 ShowTables 中返回的数据类型,但最好的替代方案是创建一个实体,您可以将 MySqlDataAdapter 中的数据转换为可以正确序列化以供客户端使用的实体。

例如:

如果您有简单的表格数据:

TableEntity : BaseEntity
{

string TableName { get; set; }

List<TableDataEntity> Data { get; set; }

TableEntity(MySqlDataAdapter dataAdapter)
{
//convert dataAdapter into TableEntity properties
}
}

BaseEntity 是可选的,只允许通用属性。您的操作将更改为:

[OperationContract]
List<TableEntity> ShowTables();

如果以上听起来比您需要的工作更多,我将确定您是否需要 WCF。

关于c# - 通过 WCF 服务返回 MySqlDataAdapter 列表导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16652922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com