是否有.NET库允许用户使用相同的代码为不同的数据库提供程序从代码中操作数据库模式?
我构建了自己的实用程序库,允许我创建或更改表或列,但我想知道是否已经存在这样的库。一个还包括约束和索引。
我使用这样的东西:
DBManager db = new DBManager(connString);
DBTable persons = new DBTable("Persons");
orders.Columns.Add(new DBColumn("Name", DBType.Varchar, 100);
orders.Columns.Add(new DBColumn("Birthday", DBType.Date);
db.CreateTable(persons);
db.AddColumn("Persons", new DBColumn("CityID",DBType.Int);
db.DropColumn("Persons", "Birthday");
当然,这不是硬编码。我想在我的应用程序中添加一个功能,允许用户指定自己可以存储在数据库中的实体,然后我的应用程序将使用该库创建基础数据库表。
答案 0 :(得分:1)
我只知道如何从代码中查询数据库架构,使用相同的代码来处理不同的数据库提供程序。
由于dotnet 2.0,大多数dotnet提供商都实现 System.Data.Common.DbConnection 。
使用System.Data.Common.DbConnection.GetSchema()
功能(不带参数),您可以询问提供商
它支持哪些collectionNames(表,视图,存储过程,.....)
这些可与GetSchema(collectionName)
一起使用以获取更多详细信息。其中的细节甚至是支持的数据类型和正则表达式来验证字段名。
您还可以查看 MyGeneration project source 。它的mymeta引擎围绕不同的数据库提供程序构建了一个公共api。
NHibernate也必须具有类似于通用数据库提供程序的东西。但我还没看过它的源代码。
答案 1 :(得分:0)
您可以使用SQL Server管理对象 http://msdn.microsoft.com/en-us/library/ms162169.aspx
如果是SQL Server,您当然正在使用...