1
|
Tom Bushell · 技术社区 · 15 年前 |
![]() |
1
2
自从我提出了我的问题,流畅的NHibernate团队已经解决了这个问题。 现在可以自动映射C值类型(字符串、int、float等)的列表。 只要确保你有最新版本的FNH。 编辑 我最近从1.0版升级到1.3版。 此版本还将自动映射数组-float[]、int[]等。 似乎把它们映射成了斑点。我认为这将比IList更有效,但还没有做任何分析来确认。 |
![]() |
2
1
我可能会做一对多的关系,并使列表另一个表… 但也许你需要重新考虑你的对象,还有一个rawx可以组成一个rawpoint吗?这将生成一个包含3列(parentID、x、y)的表。 不连续性源于希望将列表映射到RDBMS中不会非常整齐地进入列中的值。表实际上是用来存储数据列表的方法。 这就是使用像NHibernate这样的ORM的关键所在。在应用程序中手工执行所有查询和SQL组合时,添加表的维护和实现成本很高。由于NHibernate的成本几乎为0,因此利用RDBMS的优势,让NHibernate将丑陋的东西抽象出来。 我看到您在映射数组时遇到的问题,首先尝试使用覆盖映射,看看它是否可以工作,然后如果希望automap工作,您可以创建一个约定覆盖。
不确定这是否可行,我需要为这些东西配置一个NHibernate测试设置。 |
![]() |
3
1
我最终得到了一个可以工作的覆盖——见代码清单的结尾。重点是:
而且,事实证明(至少在1.0.0.594版本中)有一个非常大的自动应用的gotcha- 映射类(例如dlsappoverordexportrundatamap)不能与域类(例如dlsappoverordexportrundata)位于同一命名空间中! 否则,NHibernate会抛出 “nhibernate.mappingException:(xmldocument)(2,4):XML验证错误:…” 完全没有迹象表明真正的问题是什么或在哪里。 这可能是一个bug,可以在以后的Fluent NHibernate版本中修复。
|
![]() |
4
0
没有得到任何答案在这里或在流畅的NHibernate邮件列表上,这是我做的。 闻起来像一个可怕的黑客,但它起作用了。(它是否会扩展到大型数据集还有待观察)。 首先,我将float属性(称为value)包装在类中:
然后,我声明其他类中需要成为浮点数列表的属性,例如
nhibernate创建一个数据库表,其中包含多个外键,例如
|