gpt4 book ai didi

c# - 使用 C# 从 MS Access DB 检索表关系

转载 作者:行者123 更新时间:2023-12-02 17:51:22 25 4
gpt4 key购买 nike

我正在使用 C# 和 MS Access 2010。我需要从数据库中检索表关系,以确定实体之间的关系并在我的 C# 代码中使用它们。我也需要 SQL Server 数据库具有相同的功能。

有没有办法使用 C# 和 .NET 3.0/3.5/4.0 来做到这一点?

感谢您的时间。

谢谢,马赫什

最佳答案

这是我用来检索外键约束(关系,如果您愿意的话)的代码。 TableSchemaForeignKeyForeignKeyColumn 是我自己的类,我在其中存储结果。重点是使用 OleDbConnectionGetOleDbSchemaTable 方法:

private static void RetrieveForeignKeyInfo(OleDbConnection cnn, TableSchema tableSchema, Func<string, string> prepareColumnNameForMapping)
{
string[] fkRestrictions = new string[] { null, null, null, null, null, tableSchema.TableName };
using (DataTable dtForeignKeys = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Foreign_Keys, fkRestrictions)) {
ForeignKey foreignKey = null;
string constraintName = "";
foreach (DataRow row in dtForeignKeys.Rows) {
string newConstraintName = (string)row["FK_NAME"];
if (newConstraintName != constraintName) {
constraintName = newConstraintName;
foreignKey = new ForeignKey();
foreignKey.MasterTableName = (string)row["PK_TABLE_NAME"];
tableSchema.ForeignKeys.Add(foreignKey);
}
var foreignKeyColumn = new ForeignKeyColumn();
foreignKeyColumn.DetailColumnName = (string)row["FK_COLUMN_NAME"];
foreignKeyColumn.MasterColumnName = (string)row["PK_COLUMN_NAME"];
foreignKeyColumn.DetailColumnNameForMapping = prepareColumnNameForMapping(foreignKeyColumn.DetailColumnName);
foreignKeyColumn.MasterColumnNameForMapping = prepareColumnNameForMapping(foreignKeyColumn.MasterColumnName);
foreignKey.Columns.Add(foreignKeyColumn);
}
}
}

关于c# - 使用 C# 从 MS Access DB 检索表关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com