2010-05-31 103 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

相關問題