使用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;
}