2010-05-13 163 views
1

到目前爲止,在我的.Net編碼冒險中,我只需要將信息保存到文件中。所以我使用XmlSerializer和DataContractSerializer將屬性類序列化爲XML文件。然而,我的下一個項目需要我從SQL服務器數據庫中保存和檢索信息。我想知道我的選擇是做什麼的。將對象保存到數據庫?

該應用程序的當前版本不是由我創建的,它使用了大量硬編碼的SQL命令。但現在我試圖避免做任何事情,我必須從數據庫或對象讀取或寫入單個字段。我特別想在我的代碼中避免大量的硬編碼SQL。我喜歡序列化程序類如何根據類的屬性和/或公共屬性來了解如何讀取和寫入XML文件。有沒有類似的數據庫,而不是XML?

+1

爲什麼不使用LINQ-To-SQL或NHibernate等ORM?兩者都會避免「硬編碼SQL」。 – 2010-05-13 19:01:01

+1

您是否考慮過* OBJECT DATABASE * *?像Perst,eXtreme DB,Cache? – Guru 2010-05-13 19:07:35

回答

0

處理數據庫時沒有通用對象類型。只有表和字段。 這些的組合可以使一個對象,但。如果您關心客戶端代碼上的硬編碼SQL,最好的辦法是使用存儲過程。

我也主要是指數據庫中的實際字段類型。 ORM的是一個不同的故事。如果你想看看nHibernate,如果你想要一個對象關係映射器,可以幫助插入,選擇等。

0

根據項目的ORM像NHibernate可能是你在找什麼。您可以將數據庫信息映射到類,ORM負責插入,刪除和選擇,而無需手寫SQL。這也允許在不需要大量重寫的情況下遷移到不同的數據庫系統。

我說這取決於項目,因爲其他的東西在這裏發揮作用,比如性能和數據的實際結構。

0

我認爲你應該閱讀Linq to SQL。這將允許您使用表示數據庫表及其關係的類來「主要」工作。

DataContext context = new DataContext(); 
var obj = context.Table1.Single(row => row.Id == 1234); 
obj.Name = "Test1234"; 
context.SubmitChanges(); 

This可能是開始瞭解LINQ to SQL的 希望這是你在找什麼的好去處。

0

我同意(並更喜歡)以前使用ORM的建議。只是爲了確保你有一個完整的選項菜單是另一種選擇。如果您熟悉XML表示,(序列化)等等,您還可以考慮使用SQLXML。據說,你不應該用這個來避免做適當的數據庫設計,儘管對於某些解決方案這可能是完全合理的。