2010-05-31 97 views
0

我打算开始一个新的项目,这个项目最初将会很小,但是可能会在这些年中变得很大。我坚信我将使用ASP.NET MVC与jQuery的UI。由于某些原因,我想为MySQL作为数据库,但是担心几件事情。用于ASP.NET MVC应用程序的数据库和逻辑层

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

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

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

做题基本上都是 -

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

如果在这种情况下听起来有太多的问题,如果你能在这种情况下让我知道你会做什么(有相当的理由),作为这方面的经验丰富的人,应该回答我的问题。

+0

如果你有多年MSSQL经验和MySQL经验,你为什么选择在实际项目中使用MySQL(而不是爱好/学习者项目)?你可以从SQL Express开始,它可以和你想做的完全一样的SQL工作,是免费的,而且还有与MVC/.NET完全兼容的额外好处。只是好奇... – Tommy 2010-06-01 12:57:52

+0

很可能我会在共享托管服务提供商上托管此网站。它们允许以比MS SQL Server的小限制更低的成本实现大型MySQL数据库。其次,有一天当我的​​网站上会有大量点击和数据增加时,我可能会把它放在我自己的服务器上,对此,SQL Server的许可将成为一个大问题。 – IsmailS 2010-06-02 04:12:02

+0

@Ismail:如果你有大量的点击,并且仍然无法从你的应用程序获得足够的利润来支付许可证,那么你会做一些毫无价值的事情。此外,单纯的流量可能会让你付出更多的代价。 – 2010-06-04 05:58:14

回答

1

因为我是ALT.NET的粉丝,我会推荐你​​使用NHibernate代替EntityFramework的项目,你可以谷歌为它的优势,我相信你会选择它。

+0

如果其他人投票,我一定会考虑你的建议。我已经浏览了http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx和http://stackoverflow.com/questions/1639043/ entity-framework-4-vs-nhibernate对你的建议。看起来不错。现在我需要测试哪一个适合我的情况。我不知道为什么更多的人不回答这个问题。 – IsmailS 2010-06-07 07:00:05

+0

@Ismail:我想你缺乏回应是因为你的问题范围很大,可能缺乏使用MySQL和MS技术的经验。 – 2010-06-08 04:41:07

+0

NHibernate在学习曲线和数据访问的简易性方面有多容易? – IsmailS 2010-06-08 12:08:16

1

根据您所提到的问题,那么我会认真考虑最初与MS SQL,而不是MySQL的准备和实施LINQ到SQL,而不是实体框架,和这里的原因:

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

我不知道你的项目是什么,但你不想陷入一种情况,那就是你以后会遇到扩展应用程序的麻烦。代码的最终结果,而不是出发点,你会为以后节省很多头痛。

+0

实体框架比.net 4.0中的l2s更好。 – 2010-07-02 05:34:41

+2

@保罗门多萨:那个意见的基础是什么?我并不是说我不相信.NET 4中的EF可能会有显着的改进。0,但我只需要知道改进的地方。如果依赖于ADO.NET框架仍然存在,那么我就没有动力去改变。 – 2010-07-02 18:01:54

相关问题