C# 是否将对象保存到数据库?

C# 是否将对象保存到数据库?,c#,.net,sql-server,database,object-persistence,C#,.net,Sql Server,Database,Object Persistence,到目前为止,在我的.Net编码冒险中,我只需要将信息保存到文件中。因此,我使用XmlSerializer和DataContractSerializer将属性类序列化为XML文件。然而,我的下一个项目要求我从SQLServer数据库中保存和检索信息。我想知道我的选择是什么 该应用程序的当前版本(不是我创建的)使用了大量硬编码的SQL命令。但现在我试图避免做任何必须向数据库或对象读取或写入单个字段的事情。我特别希望在代码中避免大量硬编码SQL。我喜欢序列化程序类如何根据类的属性和/或公共属性确定如何

到目前为止,在我的.Net编码冒险中,我只需要将信息保存到文件中。因此,我使用XmlSerializer和DataContractSerializer将属性类序列化为XML文件。然而,我的下一个项目要求我从SQLServer数据库中保存和检索信息。我想知道我的选择是什么


该应用程序的当前版本(不是我创建的)使用了大量硬编码的SQL命令。但现在我试图避免做任何必须向数据库或对象读取或写入单个字段的事情。我特别希望在代码中避免大量硬编码SQL。我喜欢序列化程序类如何根据类的属性和/或公共属性确定如何读取和写入XML文件。与XML相比,数据库是否有类似的功能?

在处理数据库时,没有通用对象类型。只有表和字段。 不过,这些因素的结合可能会形成一个物体。如果您关心客户端代码上的硬编码SQL,那么最好使用存储过程


我还主要指的是数据库中的实际字段类型。ORM是另一回事。如果您需要nHibernate,如果您需要一个可以帮助插入、选择等的对象关系映射器,请查看它。

在处理数据库时,没有通用的对象类型。只有表和字段。 不过,这些因素的结合可能会形成一个物体。如果您关心客户端代码上的硬编码SQL,那么最好使用存储过程


我还主要指的是数据库中的实际字段类型。ORM是另一回事。如果您想要查看nHibernate如果您想要一个可以帮助插入、选择等的对象关系映射器。

根据项目的不同,您可能需要类似ORM的对象关系映射器。您可以将数据库信息映射到类,ORM可以为您处理插入、删除和选择,而无需手工编写SQL。这还允许迁移到不同的数据库系统,而无需大量重写


我说这取决于项目,因为其他因素在这里起作用,比如性能和数据的实际结构。

根据项目的不同,类似ORM的可能是您需要的。您可以将数据库信息映射到类,ORM可以为您处理插入、删除和选择,而无需手工编写SQL。这还允许迁移到不同的数据库系统,而无需大量重写

我说这取决于项目,因为其他因素在这里起作用,比如性能和数据的实际结构。

那里有很多产品,最臭名昭著的是,微软在年和年提供了两个相互竞争的产品(你应该使用后者,但每个人都使用前者,因为前者更简单)

您可以在

那里有很多产品,最臭名昭著的是,微软在年和年提供了两个相互竞争的产品(你应该使用后者,但每个人都使用前者,因为前者更简单)


您可以在

看到一个不错的(尽管我怀疑有偏见)ORM产品比较,我相信您指的是。它们提供了丰富的功能,包括简单的对象积垢管道

退房:


还有很多其他的,但这会让你成功。

我相信你指的是。它们提供了丰富的功能,包括简单的对象积垢管道

退房:


还有很多其他的,但这会让你继续前进。

我认为你应该仔细阅读LINQtoSQL。这将允许您“主要”使用表示数据库表及其关系的类

DataContext context = new DataContext();
var obj = context.Table1.Single(row => row.Id == 1234);
obj.Name = "Test1234";
context.SubmitChanges();
这可能是开始学习Linq to SQL的好地方
希望这就是您想要的。

我认为您应该仔细阅读Linq to SQL。这将允许您“主要”使用表示数据库表及其关系的类

DataContext context = new DataContext();
var obj = context.Table1.Single(row => row.Id == 1234);
obj.Name = "Test1234";
context.SubmitChanges();
这可能是开始学习Linq to SQL的好地方
希望这就是您想要的。

我同意(并且更喜欢)前面关于使用ORM的建议。为了确保你有一个完整的选项菜单,这里有另一个选项。如果您对XML表示(反)序列化等感到满意。。。您还可以研究如何使用SQLXML。话虽如此,您不应该使用它来避免进行适当的数据库设计,尽管对于某些解决方案来说这是完全合理的

我同意(并且更喜欢)前面关于使用ORM的建议。为了确保你有一个完整的选项菜单,这里有另一个选项。如果您对XML表示(反)序列化等感到满意。。。您还可以研究如何使用SQLXML。话虽如此,您不应该使用它来避免进行适当的数据库设计,尽管对于某些解决方案来说这是完全合理的

为什么不使用像LINQtoSQL或NHibernate这样的ORM呢?两者都可以避免“硬编码SQL”。您是否考虑过对象数据库
?比如Perst、extremedb、Cache?为什么不使用像linqtosql或NHibernate这样的ORM呢?两者都可以避免“硬编码SQL”。您是否考虑过对象数据库
?比如Perst、eXtreme DB、Cache?