在過去,我通常使用類來表示我設計和構建的應用程序中的數據。但是在網絡應用程序中,這似乎並不需要/不適用,因爲數據存儲在數據庫中,像DataSet
這樣的工具對於檢索和保存數據非常有用。爲什麼要創建類來表示Web應用程序中的數據?
我目前正與ASP.NET的工作,和數據綁定控件(如GridView
)似乎要綁定到SqlDataSource
,ObjectDataSource
,DataView
等,所以,給出一個靜態MyDB
類拉動DataSet
出來的數據庫中,我的面向數據的頁面代碼往往本質上是這樣的:
DataSet employeeData = MyDB.GetData();
DataView dvEmpData = new DataView(employeeData);
grdData.DataSource = dvEmpData;
grdData.DataBind();
因此我一般不具有數據類對應於我的數據庫架構。但是像POCO這樣的新開發和EF框架支持創建和使用這些類。這有什麼好處?我的想法是:
- 編譯時錯誤,其中拼寫錯誤,否則直到運行時纔會被忽視。
employeeData[0].Rows[i]["Name"]
是不一樣好employees[i].Name
其中employees
是IEnumerable<Employee>
- 在C#3和以後,使用LINQ和涼爽擴展方法上
IEnumerable<T>
過濾數據集合靈活而無需創建的能力/改變在存儲過程或查詢我需要做的每個聚合/選擇的數據庫。 - 源代碼在SCM下比在數據庫內容更容易保留,這意味着在源代碼中保留更多的邏輯更好。
- 像我這樣的人誰學會CS做本地應用程序更舒適:-)
在另一方面,把它們在屏幕上之前,將數據轉換成.NET類是需要計算時間的工序,並不是絕對必要的。而且我有一種感覺,GridView
和它的同胞會優先於而與DataView
綁定。另外,數據庫在查詢和彙總數據方面要比LINQ更快。
POCO認可的方法背後的推理是什麼?我在這裏覆蓋它,還是我錯過了什麼?
這看起來不錯!它如何處理數據庫的更新?如果更改我的更新/選擇/刪除SPROC以獲取更多參數或在開發過程中更改表格模式,會發生什麼情況?我在ASP.NET 2中使用了TableAdapter,並遇到了問題。 – 2011-05-23 23:56:26
要更新數據:Dim DB as new AppDataContext :: MyProduct.Price = NewPrice :: DB.SubmitChanges() – 2011-05-24 00:03:08
LINQ to SQL自動生成SQL,默認情況下用於執行選擇/更新等。但是,您可以指定覆蓋(例如存儲過程)。我建議花幾小時閱讀這些......你會很高興你做到了!從Part1開始! http://scottonwriting.net/sowblog/archive/2010/07/27/links-to-scott-guthrie-s-using-linq-to-sql-tutorials.aspx – 2011-05-24 00:05:47