对于数据库,我喜欢使用其中一个ORM,我可以简单地标记我的模型类,并为我构建数据库表.我之前用Groovy和Grails做了一些测试,并认为GORM做得很顺利.在.Net中设置数据库的最佳方法是什么?
让我印象深刻的第一件事就是使用nHibernate.我对nHibernate一无所知,但我听到很多人热情地提到它.但后来我发现ADO .Net也是一个内置于框架中的ORM .. nHibernate是否超越了ADO?和LINQ有什么关系?我看到它也被列为ORM,但我认为LINQ更适用于查询部分?我可以通过LINQ“定义”数据库吗?
解决方法
其中一位NHibernate贡献者Ayende Rahien最近发布了关于NHibernate和Silverlight的a blog post:
I got a few questions about NHibernate and Silverlight. That is actually a very easy thing to answer.
Don’t even try. They don’t get along. In fact,they aren’t even going to get along.
Silverlight doesn’t have System.Data.IDbConnection,and you can safely assume that that it somewhat important to NHibernate.
So,running NHibernate inside a Silverlight application,presumably in order to access a local database is out. But I don’t think that this is what most people actually had in mind when they ask about NHibernate and Silverlight. They want to know about NHibernate on the server and Silverlight on the client.
And that is easy enough to answer as well,it is going to work just like any client / server system. All the same rules apply.
因此,只要您不打算直接从Silverlight客户端使用它,NHibernate就应该工作.
NHibernate的:
NHibernate是一个很棒的ORM,但它有一个非常陡峭的学习曲线,所以如果你选择NHibernate,你应该准备花一些时间学习框架.如果您进行投资,您将获得NHibernate提供的灵活性和强大功能.
Castle ActiveRecord:
Castle ActiveRecord是一个构建在NHibernate之上的框架,因此与NHibernate非常相似.它稍微减少了学习曲线,因为它增加了一些额外的抽象.顾名思义,它是与ActiveRecord模式一起使用的构建,并且包含一个基类,如果您不介意使用它们的ActiveRecord基类,它将为您提供相当多的功能.
LINQ to sql:
LINQ to sql和ADO.NET Entity Framework是.NET Framework中包含的两个ORM. LINQ to sql是一个比Entity Framework更小更简单的框架,但它有一些不错的功能,并且很容易上手.
实体框架:
实体框架也很容易上手,但它在当前版本中有一些相当大的问题,因为它仍然在版本1.但是,下一版本的实体框架将改进和修复当前的许多缺点.
框架的LINQ和模式生成:
所有这些框架都支持使用LINQ作为查询语言. LINQ to sql和NHibernate可以根据您的域类和映射为您生成架构.实体框架无法在v1中生成架构,但v2将添加该功能.