2009-09-30 40 views
4

我正在尋找使用Active Record模式的.net OR/M,並允許開發人員定義將更新代碼中的數據庫方案的遷移。我在http://www.castleproject.org/activerecord/index.html上看到過ActiveRecord - 但它記錄不完全(有嚴重過時的樣本),並且沒有可用的生產就緒版本。我的目標DBMS是MSSQLE 2008;但最好生成的SQL將與MSSQL 2000兼容。.net具有完全遷移支持的Active Record ORM

我寧願不使用nHibernate,因爲我知道它需要一個XML文件來維護該方案並且不支持遷移。使用.net反射和屬性,在這種情況下,圖書館對XML的使用是不可接受的,並且對平臺的一般用途來說並不是很原生的。

我主要關心的是維護數據庫方案。因爲這是ASP.NET MVC項目,所以能夠保持數據庫方案在環境之間同步是必須的。考慮到.NET的普及,我無法找到具有內置遷移支持的單個OR/M的事實 - 就像我之前所說的那樣,自定義屬性和反射使得代碼很容易實現。

能夠在我的實體類外部沒有外部配置文件(ala ADO.NET實體框架)的情況下定義我的實體也是我想避免的。 OR/M無法通過在關聯屬性上使用自定義屬性來推斷列名。

無論如何,有沒有什麼建議?我所要求的可能是不存在的;如果是這樣,是否有任何第一手帳戶使用其他.net或/你可以分享的小姐?

+0

不.net有activeRecord類? – BKSpurgeon 2015-11-12 00:19:36

+0

這是一個6歲的問題......不,沒有內置到.net中的Active Record。您可以得到最接近的是Linq2Sql(折舊,無遷移支持)或Entity Framework(過去幾年確實包括遷移支持)。但這仍然是一個外部庫,而不是.net BCL的一部分。 – nlaq 2015-11-12 00:25:45

回答

4

我寧可不使用NHibernate的,因爲 我明白它需要一個XML文件 維護方案

你有沒有看着Fluent-NHibernate,它允許您使用流利的定義您的模型。網絡API。從現場

實施例:

public class CatMap : ClassMap<Cat> 
{ 
    public CatMap() 
    { 
    Id(x => x.Id); 
    Map(x => x.Name) 
     .Length(16) 
     .Not.Nullable(); 
    Map(x => x.Sex); 
    References(x => x.Mate); 
    HasMany(x => x.Kittens); 
    } 
} 

(流利-的NHibernate還支持auto-mappings,基於約定)

NHibernate的也支持Schema Creation and Updating。模式創建是一種享受,我之前在Web項目和內存單元測試中使用過很多次。尚未使用更新功能,因爲我一直在使用Migrator.NET來處理這個問題。

+0

架構生成的其他鏈接:http://stackoverflow.com/questions/1299373/generate-database-schema-from-nhibernate-mapping – Cherian 2009-10-01 01:58:08

+0

有趣的想法。仍然不像我希望的那麼簡單。 – 2010-01-20 22:29:44