0

我将开始一个新项目,该项目最初会很小,但多年来可能会变得很大。我坚信我将使用 ASP.NET MVC 和 jQuery 作为 UI。由于某些原因,我想将 MySQL 作为数据库,但担心一些事情。

我对 Linq 完全陌生,但是一旦您熟悉它,它似乎更容易使用。

首先,访问数据应该很容易。所以我想我应该使用 MySQL to Linq,但在某处我读到它不直接受支持,但 MySQL .NET 连接器增加了对 EntityFramework 的支持。我不知道它的优点和缺点是什么。我也听说过 DbLinq。如果我可以实现存储库模式,我会很高兴,因为它允许在逻辑层而不是数据访问层中应用过滤器。如果我使用实体框架可以吗?

我也担心性能。有人告诉我,如果我们使用实体框架,它会获取大量数据然后对其进行过滤。那正确吗?

所以问题基本上是 -

  1. MySQL到Linq可能吗?如果是,我在哪里可以获得更多详细信息?
  2. 在 MySQL中使用 EntityFramework 或DbLinq的优缺点?
  3. 使用 EntityFramework 或 DbLinq 和 MySQL 访问数据是否容易?
  4. 我是否能够实现允许在逻辑层而不是数据访问层应用过滤器的存储库模式(当我将 EntityFramework 与 MySQL 一起使用时)
  5. 它是否从数据库中获取大量数据然后对其应用过滤器?

如果在这种情况下我的问题听起来太多了,如果您可以让我知道作为该领域的经验丰富的人在这种情况下您将做什么(有充分的理由),那应该回答我的问题。

4

2 回答 2

1

由于我是 ALT.NET 的粉丝,我会建议您在项目中使用 NHibernate 而不是 EntityFramework,您可以通过谷歌搜索它的优势,我相信您会选择它。

于 2010-06-04T14:17:20.093 回答
1

根据您提到的几点,我会认真考虑最初使用 MS SQL 而不是 MySQL,并实施 LINQ-to-SQL 而不是 Entity Framework,原因如下:

  1. 您预计会有大量流量的事实最初告诉我,您需要考虑您计划在哪里结束,而不是从哪里开始。我在 MS SQL 方面的经验比在 MySQL 方面的经验要多得多,但是如果您要从 MySQL 的社区版本开始并稍后升级,那么无论如何您都将在 Enterprise 版本上产生大量费用。
  2. 我听说有一个支持 MySQL 的 LINQ 版本,但是,除非最近发生了变化,否则它仍处于测试阶段。我正在完成一个为期 18 个月的基于 Web 的项目,该项目使用 ASP.NET MVC 1.0、LINQ-to-SQL、JavaScript、jQuery、AJAX 和 MS SQL。我使用 WatiN 实现了存储库模式、视图模型、接口、单元测试和集成测试。技术组合对我来说效果很好,我计划在我正在开发的个人项目中使用相同的组合。
  3. 当您获得带有托管计划的 MS SQL 时,您通常能够从该单个实例创建多个数据库。看起来它们为您提供了更多存储空间,因为它们为您提供了多个 MySQL 数据库,但这仅仅是因为该架构仅支持每个实例创建一个数据库。
  4. 我不会在我的 ASP.NET MVC 项目中使用实体框架,因为一开始我并不喜欢 ADO.NET。我不想打开连接、创建命令对象、填充参数集合、发出执行方法,然后遍历单向读取器对象来获取我的数据。一旦您看到 LINQ-to-SQL 如何简化流程,您也不会想回头。在我之前提到的项目中,我在数据库中有超过 60 个表,大约有 200 个外键关系。因为我在我的数据层中使用了 LINQ-to-SQL 和存储库模式,所以我能够不使用单个存储过程来构建应用程序。LINQ-to-SQL 自动防御 SQL 注入攻击并支持乐观和悲观并发检查。

我不知道您的项目是什么,但您不想陷入以后无法扩展应用程序的情况。为最终结果编写代码,而不是为起点编写代码,以后您会省去很多麻烦。

于 2010-07-02T05:04:49.487 回答