【发布时间】:2012-03-11 22:37:34
【问题描述】:
我正在尝试通过从数据库中读取的信息填充 DataRelation 集合。
DataTable schemaTable =
oleconnection.GetOleDbSchemaTable(
OleDbSchemaGuid.Foreign_Keys,
new object[] { null, null, tablename });
但是这个信息没有说明它是真正的外键约束还是只是关系,因此,我不知道为 DataRelation 构造函数的第四个参数(createConstraints)设置什么值。
public DataRelation(
string relationName,
DataColumn[] parentColumns,
DataColumn[] childColumns,
bool createConstraints
)
特别是,在 MS Access 中,可以使用关系连接两个表,但不强制执行数据完整性检查。一些额外的研究表明,这种不强制的关系也出现在 OleDbSchemaGuid.Referential_Constraints 模式表中。
我想知道在哪里可以获得所需的信息。请给我指路。
【问题讨论】:
-
您需要哪些特定数据库的信息。您是否只需要 PK-FK 关系或检查约束。
-
对于 MS Access。我需要 PK-FK 关系列表(以及关于它是否强制执行的每个项目信息 - 在 MS Access 中,可以在不强制执行的情况下创建 PK-FK 关系)。
-
如果我向您提供列名列表,关系中使用的表名以及用于识别关系的真/假是否强制执行。它会起作用还是你需要明确的关系对象。
-
再查询一次,你使用的是哪个版本的访问权限,即 2003、2007、2010。
-
MS Access 2003。是的,每个关系的强制标志字段(真/假)对我来说就足够了。我试图找到这样的字段,但没有找到我真正想要的(即使是几个字段的组合也不是)。
标签: c# ado.net oledb oledbconnection getschematable