我将构建一个应用程序,但我不确定要使用什么框架。在我工作的地方,他们使用了代码匠的Ntiers,nettiers是免费的但不是代码匠。我发现了实体框架,但我也读到了使用它的方法是使用一种叫做“存储库模式”的东西,但是对使用它有很多疑问。我没有很大的预算,只有我自己,无法负担昂贵的工具,可以自动创建我的类,更新,删除,创建功能,并留下一些代码供我实施。所以我不知道该怎么办,我应该去实体框架(这是唯一一个免费的吗?),还是有其他我可以使用的东西,可能不那么昂贵但可靠。
我非常感谢我对此的一个很好的建议,最终这个应用程序会增长和增长,并且希望易于维护。
PS:我会选择实体框架和存储库模式,如果这是我最好的选择。
使用C#,Asp.net和MSSQL 2008。
答案 0 :(得分:4)
使用code first and automatic migrations的实体框架是您可以使用的最简单的ORM之一。它非常灵活,在Microsoft堆栈中得到了很好的支持,并且首先使用代码,这是开发数据库的最快方法之一。
首先使用Entity Framework代码,将数据模型定义为普通的C#类。这将对应于Product表:
public Product {
public int Id { get; set; }
public string Name { get; set; }
}
创建数据库上下文。
public MyDbContext : DbContext {
public DbSet<Product> Products { get; set; }
}
将连接字符串添加到Web.config,并在包管理器控制台中运行命令:
>Enable-Migrations –EnableAutomaticMigrations
>Update-Database
现在您拥有了一个包含Products表的功能数据库。当您对类进行更改时,只需再次运行Update-Database,它就会为您迁移架构。
添加新产品:
using (var db = new MyDbContex()
{
Product product = new Product() { Id = 1, Name = "Tablet" };
db.Products.Add(product);
db.SaveChanges();
}
查询数据变得如此简单:
using (var db = new MyDbContex()
{
// get product with id == 1
Product product = db.Products.Single(p => p.Id == 1);
}
至于存储库模式,它只是design pattern。有很多不同的variations of the repository pattern,但它实际上是将数据存储与数据访问层分开。这使得单元测试更容易,而不必依赖于存在的外部数据库。
根据您的评论进行编辑:有几种方法可以使用EF和存储过程。请参阅Does Entity Framework Code First support stored procedures?和Using Stored Procedure to Insert Data。
答案 1 :(得分:2)
您可以选择的另一个列表是:
数据层:Ibatis.Net或NHibernate(我主要使用两者,NHibernate用于CURD,IBatis.NET用于查询,例如,调用SP,使用动态查询)。
Spring.Net:IoC助手
Asp.NET MVC:MVC框架。
Benifit是:IBatis,NHibernate和Spring.Net与Java版本非常相似,所以你可以找到很多文档。
我能说的是具有良好ORM(EF,Nhibernate或Ibatis)的3层是复杂项目的最佳实践,它更易于维护和合作。如果您的项目非常简单,LINQ + WebForm可以在几个小时内帮助您,您可以放弃MVC。
答案 2 :(得分:2)
我认为这完全取决于您作为开发人员的位置以及您想要做的事情。至于成本 - 实体框架是免费的Visual Studio。流畅的NHibernate与EF非常相似,它也适用于Oracle,MySql和MSSQL以及you can get it超级简单的通过nu get。
存储库模式只是用于获取集合的模式。
我想说ORM都有其优点和缺点。