使用Enterprise Library获取DataSet,当用DataColumn[] dcs = dt.PrimaryKey;获取子表的主键时确发现总是获取不到,检查表确实是有设置主键的。问题出在哪儿呢?打开EnterpriseLibrary.Data的源码,发现Database.cs源文件的 protected DbDataAdapter GetDataAdapter(UpdateBehavior updateBehavior)方法没有设置获取主键,将方法作以下修改,搞定!
protected DbDataAdapter GetDataAdapter(UpdateBehavior updateBehavior){
DbDataAdapter adapter = dbProviderFactory.CreateDataAdapter();
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; //新添加
if (updateBehavior == UpdateBehavior.Continue)
{
SetUpRowUpdatedEvent(adapter);
}
return adapter;
}