2011-02-13 106 views
1

是否有任何用於.NET的庫,允許用戶使用相同的代碼爲不同的DB提供程序從代碼操作數據庫模式?數據庫模式庫

我建立了自己的實用程序庫,允許我創建或更改表或列,但是我想知道是否已經有這樣的庫。一個也包含約束和索引。

我用的是這樣的:

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

如果你有自己的工具你爲什麼要尋找一個在別處存在的工具?你正在使用哪個數據庫(mysql,mssql,pgsql?) – 2011-02-13 09:27:54

回答

1

我只知道如何從代碼中使用的查詢數據庫模式不同數據庫提供者的相同代碼。

由於dotnet 2.0大多數dotnet提供程序執行System.Data.Common.DbConnection

隨着System.Data.Common.DbConnection.GetSchema()函數(不帶參數),你可以問哪個collectionNames它支持提供商 (表,視圖,存儲過程,......) 這些可以用GetSchema(collectionName)來獲得更多的細節。其中的細節甚至支持數據類型和正則表達式來驗證字段名稱。您可以看看MyGeneration project source。它的mymeta引擎圍繞不同的數據庫提供者構建了一個通用API。

NHibernate必須有一個像普通的數據庫提供者一樣。但我還沒有看過它的源代碼。