我正在使用NHibernate的SQL Server 2008作为应用程序。在应用程序中,我需要创建一个Info类的多个对象,并在多个地方使用它。我还需要将该对象存储在数据库中。在数据库中存储对象
Info类有多种类型。
储存信息类的这些对象我有两个选择
- 存储类
- 商店该类作为字符串的细节的序列化obejct。
什么是存储在数据库中存储过的值作为多个字符串序列化对象的优势在哪里?
-RAM
我正在使用NHibernate的SQL Server 2008作为应用程序。在应用程序中,我需要创建一个Info类的多个对象,并在多个地方使用它。我还需要将该对象存储在数据库中。在数据库中存储对象
Info类有多种类型。
储存信息类的这些对象我有两个选择
什么是存储在数据库中存储过的值作为多个字符串序列化对象的优势在哪里?
-RAM
如果你的序列化对象存储到数据库:
我您存储多个字符串,您:
我一定会用关系规范化的形式存储字符串,然后在.net中构建相应的类生成器。
我肯定会储存记录和字段,而不仅仅是代表对象的当前状态字节(二进制或文本或XML)的块。
它当然取决于您的业务实体(在您的情况下,信息类)的复杂性,但我真的会避免将其序列化版本保存在1列。
如果您将所有属性分解到字段中,您可以更好地查询具有特定值的记录,并且可以更轻松地处理新列和发布。
例如你在数据库中保存xaml属性?而不是保存类,并防止自我创建xaml文件? – 2011-03-08 11:17:20
不,我的意思是,如果你有属性/字段名称,姓氏和出生日期的类人,你保存在一个记录与字段:名称varchar,姓氏varchar,BirthDate日期时间。我根本不是在谈论XAML。 – 2011-03-08 11:21:12
序列化对象(XML) 如果将该类存储为XML。你将能够通过使用Xquery来搜索类的方位。如果你想搜索(有或没有条件),这种方式是可行的。更重要的是,您可以创建XML列的索引。 XML索引将使您的应用程序更快。
AS字符串 如果您没有bussines登录来查看课程内容。
那么以规范化和关系的方式展开所有属性也将允许索引像往常一样,我敢打赌查询在int或varchar列上比在XML数据列上快得多,这也可能具有不同的实现和查询语法取决于在数据库服务器上。 – 2011-03-08 11:23:25
你有没有想过使用像NHibernate或EntityFramework的OR映射器,而不是创建自己的持久层? – Fionn 2011-03-08 11:10:14
@Fionn - 我们也在使用NHibernate。 – Ram 2011-03-08 11:11:09