【问题标题】:DataTable, WCF and Constraints issue数据表、WCF 和约束问题
【发布时间】:2014-10-13 16:06:43
【问题描述】:

我正在使用 DataTable 通过 WCF 通道进行传输。 我知道,这是一个糟糕的解决方案,但它是系统设计所必需的。

所以,我遇到了一个问题... 如您所见,在这段代码中,我正在使用 dataadapter 填充数据表。

using (var session = DatabaseManager.SessionFactory.OpenSession())
{
    using (var conn = session.Connection as MySqlConnection)
    {
        var adapter = new MySqlDataAdapter(string.Format("SELECT * FROM {0}", dt.TableName), conn);
        adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
        adapter.Fill(dt);
        dt.AcceptChanges();
    }
}

当我在服务器端检查 DataTable 约束属性时,填充后立即填充。而且没关系。

但是!当数据表来到客户端时,约束消失了。 AcceptChanges 在我这里不起作用...

BaseDataTable 代码 sn-p:

    public class BaseDataTable : DataTable
{
    public string TableDescription { get; set; }
    public DateTime ProcessTime { get; set; }
    public bool IsEditable { get; set; }

    public BaseDataTable()
    {

    }

    public BaseDataRow GetNewRow()
    {
        BaseDataRow row = (BaseDataRow)NewRow();

        return row;
    }

    public class BaseDataRow : DataRow
    {
        internal BaseDataRow(DataRowBuilder builder) : base(builder) { }
    }
}

**但是!当我发送给客户端的不是自定义类型的 DataTable,而是一个用 DataAdapter 填充的通用 DataTable 时,所有属性都正确填充**

已检查: 设置DataTable RemotingFormat = SerializationFormat.Binary/Xml -- 无效

【问题讨论】:

  • stackoverflow.com/questions/12702/… 可能有助于数据集解决方案
  • 不适合我...有一些不同的问题...我根本没有错误...Constraints 属性,来自服务器的数据表是空的

标签: wcf datatable constraints


【解决方案1】:

确保将 DataTable 归为 DataContract。你能展示你是如何定义 dt 的吗?

请确保 DataTable 类型的 dt 公开为 DataContract。

希望对你有帮助。

【讨论】:

  • 它说:类型“BaseDataTable”不能是 IXmlSerializable 并且具有 DataContractAttribute 属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多