德尔福2010客户端消耗C#WCF服务:数据绑定和Entity Framework(Consumin

2019-06-23 22:24发布

我写的迁移德尔福2010年的多层架构一个Win32德尔福VCL应用。
应用使得由DevExpress的数据绑定大量使用ExpressGrids(TcxGrid)的。

  • 我设计了基于实体框架的数据层,使用的DbContext和数据传输对象。
  • 我必须通过WCF使用基于实体数据模型T4模板暴露CRUD操作。

这是所有工作正常,德尔福的客户成功地与WCF服务进行通信,交换数据传输对象。

问题是, 我该如何维护数据绑定功能 ? 我扶着走向写返回一个通用数据表或数据集服务方法。 我可以转换成LINQ语句结果数据集,表或视图? 我不知道我可以绑定到Expressgrids对象数组(WCF返回的实体集合,但德尔福看到阵列)。 是否有任何人有这种类型的互操作性的经验吗?

编辑

我有数据服务返回数据集,但你猜怎么着? 从.NET中的XML数据集不是用Delphi(2010年至少)兼容。 我设法得到,使用工作壁虎例(修改) ,但它不会成为现实,由于我们需要从客户端运行查询的复杂性。 我们的选择,现在,是离开电网,因为他们直到BLL完成并启动一个新项目重新写在C#中的客户端(Web或Windows应用程序),或者写一个通用的网格插件使用的RemObjects九头蛇,以嵌入形式与grids-努力现在明白这一点。

更新我已经赞成通过研究德尔福通过的TClientdataSet所需的XML格式写我自己放弃了壁虎数据集执行。 在服务器端,我实现了返回的TClientdataSet符合XML标准的字节数组形式的服务。 在客户端予加载该成TStringStream,然后将流加载到TClientDataSet组件。 我用这个小集合,而我们推出的水润解决方案,提供查询和数据绑定。

该XML大致遵循以下格式:

 "2.0"> <METADATA> <FIELDS> <FIELD attrname="ID" fieldtype="i4"/> <FIELD attrname="Status" fieldtype="string" WIDTH="10"/> <FIELD attrname="Created" fieldtype="date"/> <ROWDATA> <ROW RowState="4" ID="1" Status="Code1" Created="20130707" Made="20130707T21:37:55341" Stopped="00:00:00000" Volume="1174" IsReady="TRUE"/> <ROW RowState="4" ID="2" Status="Code2" Created="20130707" Made="20130707T21:37:55341" Stopped="00:00:00000" Volume="2149" IsReady="FALSE"/> 

这是对XML格式的信息,少数来源之一。

我知道这个问题是旧的,但我希望在互操作性和旧代码迁移任何见解。

谢谢

文章来源: Consuming C# WCF service from Delphi 2010 client: Databinding and Entity Framework