1

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

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

4

6 回答 6

2

对象关系映射

那里有很多产品,最臭名昭著的是NHibernate ,微软在Linq 2 Sql实体框架中提供了几个竞争产品(你应该使用后者,但每个人都使用第一个,因为它更简单) .

您可以在http://ormbattle.net/上看到 ORM 产品的一个很好的(尽管我怀疑是有偏见的)比较

于 2010-05-13T19:02:08.190 回答
2

我相信您指的是Object Relational Mappers。这些提供了丰富的功能,包括简单的对象 CRUD 管道。

查看:

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

于 2010-05-13T19:03:37.130 回答
0

处理数据库时没有通用对象类型。只有表和字段。但是,这些的组合可以构成一个对象。如果您关心客户端代码上的硬编码 SQL,最好的选择是使用存储过程。

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

于 2010-05-13T18:58:57.637 回答
0

根据项目的不同,您可能正在寻找像NHibernate这样的 ORM。您可以将数据库信息映射到类,而 ORM 会为您处理插入、删除和选择,而无需手写 SQL。这也允许迁移到不同的数据库系统而无需大量重写。

我说这取决于项目,因为其他因素在这里发挥作用,例如性能以及数据的实际结构。

于 2010-05-13T19:01:00.960 回答
0

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

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

可能是开始学习 Linq to SQL 的好地方 希望这就是您要找的。

于 2010-05-13T19:08:53.860 回答
0

我同意(并且更喜欢)之前使用 ORM 的建议。只是为了确保您有完整的选项菜单,这是另一种选择。如果您对 XML 表示、(反)序列化等感到满意……您也可以考虑使用 SQLXML。话虽如此,您不应该使用它来避免进行正确的数据库设计,尽管这对于某些解决方案来说是完全合理的。

于 2010-05-13T19:11:26.153 回答