Pay*_*aya 13 c# subsonic nhibernate orm entity-framework
我正在开发一个具有以下类的应用程序:
class Shortcut
{
public string Name { get; }
public IList<Trigger> Triggers { get; }
public IList<Action> Actions { get; }
}
class Trigger
{
public string Name { get; }
}
class Action
{
public string Name { get; }
}
Run Code Online (Sandbox Code Playgroud)
而且我将有20多个课程,这些课程将来自Trigger
或Action
,所以最后,我将有一个Shortcut
课程,15个来自的Action
课程和5个来自的Trigger
课程.
我的问题是,哪种ORM最适合这种应用? EF
,NH
,SubSonic
,也许别的东西(Linq2SQL
)?
我将定期发布新的应用程序版本,添加更多触发器和操作(或更改当前触发器/操作),因此我还必须更新数据库模式.我不知道是否提供EF
或NH
提供任何好的方法来轻松更新架构.或者,如果他们这样做,是否有任何教程如何做到这一点?
我已经发现这个文章关于NH
模式更新,报价:
幸运的是,NHibernate为我们提供了更新现有模式的可能性,即NHibernate创建了一个可以应用于数据库的更新脚本.
我从来没有找到如何实际生成更新脚本,所以我无法告诉NH
更新架构.也许我误读了一些东西,我只是没找到它.
注意:如果你建议EF
,EF
1.0也适合吗?我宁愿使用比4.0更旧的.NET.
注2: ORM框架应免费用于商业用途.
注3:我还将使用代码混淆,随机重命名所有符号等...所以ORM应该支持这个.
在.NET 4之前,实体框架还不够成熟,不适合我的口味.此外,它不支持POCO.
使用EF输出,我会选择NHibernate.为了使配置基于代码更容易,我还会使用Fluent NHibernate.NHibernate非常成熟,并且有很多社区支持.它具有从最新代码更新数据库模式的出色工具.强烈推荐.
我不认为其他任何一个都是严肃的选择.实体框架将迅速获得思想共享,因为它内置并由MS严格营销.NHibernate将继续成为可行的竞争对手,因为它具有广泛的普及性和成熟度.其余的将慢慢落在路边,直到它们只被少数热心的支持者使用.
我想你在这里比较两个不同类别的系统:
SubSonic和Linq-to-SQL在数据库之上是相当简单的薄层.它们基本上只提供数据库表和域对象之间的1:1映射.如果这对你的情况足够好,那么这些工具也是最简单,最容易使用的,也是性能最好的ORM.
.NET 4和NHibernate中的EF是完全不同的类 - 它们提供企业级功能,它们支持多个数据库,它们支持映射和将数据库结构变形为不同的域结构,并且它们很擅长.EF4也支持POCO,之前针对EF使用的所有问题与.NET 4版本的Entity Framework几乎没有关系.
但NHibernate和EF4都比较复杂,它们需要更多的设置,更多的学习曲线,直到你"得到它",它们有点重,它们有额外的映射层,可以实现这些高级功能,但它们也会降低性能而且他们使事情变得更加复杂.
所以我想它真的归结为你的要求:如果你需要一个相当简单易用的系统,那就选择Linq-to-SQL或Subsonic.如果您需要更多企业级功能,并且不介意设置这些ORM所需的额外工作,请选择EF4或NHibernate.