【发布时间】: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