ASP.NET MVC应用程序的数据库和逻辑层

时间:2010-05-31 09:16:54

标签: mysql asp.net-mvc linq data-access-layer linq-to-mysql

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

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

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

我也很关心表现。有人告诉我,如果我们使用Entity框架,它会获取大量数据然后对其进行过滤。是吗?

所以问题基本上都是 -

  1. MySQL可以使用Linq吗?如果是,我可以在哪里获得更多详细信息?
  2. 使用EntityFramework或DbLinq与MySQL的优缺点?
  3. 使用EntityFramework或DbLinq与MySQL访问数据是否容易?
  4. 我是否能够实现存储库模式,允许在逻辑层而不是数据访问层中应用过滤器(当我在MySQL中使用EntityFramework时)
  5. 它是从数据库中获取大量数据然后在其上应用过滤器吗?
  6. 如果在这种情况下我的方面听起来太多问题,如果你能在这种情况下让我知道你会做什么(有相当大的理由)作为一个有经验的人,这应该回答我的问题。

2 个答案:

答案 0 :(得分:1)

由于我是ALT.NET的粉丝,我建议你使用NHibernate代替EntityFramework而不是EntityFramework,你可以谷歌获得它的优势,我相信你会选择它。

答案 1 :(得分:1)

根据你提到的观点,我会认真考虑最初使用MS SQL而不是MySQL,并实现LINQ-to-SQL而不是实体框架,这就是原因:

  1. 您预计会有大量流量的事实最初告诉我您需要考虑您计划最终的位置,而不是从哪里开始。我对MS SQL的经验比对MySQL有更多的经验,但是如果你谈到从社区版本的MySQL开始并稍后进行升级,那么无论如何你都会在企业版本上花费很多。
  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。我不想打开连接,创建命令对象,填充参数集合,发出execute方法,然后遍历单向读取器对象以获取我的数据。一旦你看到LINQ-to-SQL如何简化了这个过程,你也不会想要回去。在我之前提到的项目中,我在数据库中有超过60个表,其中有大约200个外键关系。因为我在数据层中使用了LINQ-to-SQL和存储库模式,所以我能够使用而不是单个存储过程来构建应用程序。 LINQ-to-SQL自动防止SQL注入攻击,并支持乐观和悲观的并发检查。
  5. 我不知道您的项目是什么,但您不希望遇到以后难以扩展应用程序的情况。最终结果的代码,而不是起点,你以后会为自己省去很多麻烦。