3

我将构建一个应用程序,但我不确定要使用什么框架。在我工作过的地方,他们使用 Ntiers 和 codesmith,nettiers 是免费的,但不是 codesmith。我发现了实体框架,但我也读到使用它的方法是使用一种称为“存储库模式”的东西,但对使用它有很多疑问。我没有很大的预算,而且只有我自己,买不起一个昂贵的工具来自动创建我的类,更新、删除、创建功能并留下一些代码让我实现。所以我不确定要走什么路,我应该去实体框架(这是唯一一个免费的吗?),还是那里有其他我可以使用的东西,也许不是那么贵但可靠。

正如我所期望的那样,我真的很感激一个很好的建议,最终这个应用程序会越来越大,并且希望易于维护。

PS:如果那是我最好的选择,我会选择实体框架和存储库模式。

使用 C#、Asp.net 和 MSSQL 2008。

4

3 回答 3

4

具有代码优先和自动迁移的实体框架是您可以使用的最简单的 ORM 之一。它很灵活,在 Microsoft 堆栈中得到很好的支持,并且代码优先,这是开发数据库的最快方法之一。

首先使用实体​​框架代码,将数据模型定义为普通的 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);
}

至于存储库模式,它只是一种设计模式存储库模式有很多不同的变体,但它实际上是将数据存储与数据访问层分开。这使得单元测试更容易,而不必依赖于存在的外部数据库。

从您的评论中编辑:有几种使用 EF 和存储过程的方法。请参阅Entity Framework Code First 是否支持存储过程?使用存储过程插入数据

于 2012-11-27T04:39:21.563 回答
2

您可以选择的另一个列表是:

数据层:Ibatis.Net 或 NHibernate(大多数情况下我都使用了,NHibernate 用于 CURD,IBatis.NET 用于必要的查询,例如调用 SP,动态查询)。

Spring.Net:IoC 助手

Asp.NET MVC:MVC 框架。

好处是:IBatis、NHibernate 和 Spring.Net 与 Java 版本非常相似,所以你可以找到很多关于它们的文档。

我可以说的是,具有良好ORM(EF,Nhibernate或Ibatis)的3层是复杂项目的最佳实践,更易于维护和协作。如果你的项目很简单,LINQ + WebForm 可以在几个小时内帮助你,你完全可以放弃 MVC。

于 2012-11-27T04:14:36.647 回答
2

我认为这完全取决于您作为开发人员的位置以及您想做什么。就成本而言,Visual Studio 中的 Entity Framework 是免费的。Fluent NHibernate 与 EF 非常相似,它也适用于 Oracle、MySql 和 MSSQL,您可以通过 nu get 轻松获得它。

存储库模式只是获取集合的模式。

我想说两个 ORM 都有其优点和缺点。

于 2012-11-27T04:19:59.377 回答