是否有一种简单的方法可以将某些权限的属性作为批量存储在列中,如XML或其他什么?那些属性的Querieng当然不是一种选择,但是如果没有数据库迁移就能扩展数据模型仍然是有价值的。
答案 0 :(得分:3)
对于NHibernate,您可以使用动态组件 http://nhibernate.info/doc/nh/en/index.html#components-dynamic 要么 使用字典作为名称 - 值列表 nhforge.org/doc/nh/en/index.html#collections-mapping 甚至鸭子打字 http://fabiomaulo.blogspot.com/2009/07/duck-typing-with-nhibernate.html
答案 1 :(得分:2)
据我所知,您无法直接使用NHibernate执行此操作,但您可以实现一个私有属性,该属性将字段组合并分解为字符串并映射到该属性,而不是直接映射字段。
但我不确定这首先应该做些什么。通常需求往往会在应用程序的开发和生命周期中出现,并且一旦您需要其中一个字段 - 即使您现在认为您永远不需要查询该字段 - 您将会遇到困难。将列添加到现有数据库的表中并不是什么大不了的事情,您仍然需要为表中的每个元组更新xml,因此我认为最好只在列中存储一个字段。
最诚挚的问候,
Oliver Hanappi
答案 2 :(得分:1)
不在NHibernate。我不知道实体框架。
您仍然需要数据库迁移来存储XML字段,因此当您在Entity框架或其他框架中找到此功能时,它不会阻止您进行数据库架构更新。
答案 3 :(得分:1)
是的,您可以使用可序列化对象和IUserType实现在NHibernate中执行此操作。 This link描述了如何为SQL Server XML字段创建IUserType实现,this link描述了如何构建它以将对象序列化为XML字段。
答案 4 :(得分:0)
您可以尝试将xml转换为字符串,然后再将其存储在数据库中。
实体框架不支持 本机XML数据类型。这意味着 当一个实体映射到一个 带有XML列的表, XML的等效实体属性 column是一个字符串。物体可以 断开连接并序列化为XML。 有关更多信息,请参阅序列化 对象(实体框架)。