我正在考虑使用NHibernate和Fluent NHibernate使用可扩展的数据模型构建电子商务应用程序。通过具有可扩展的数据模型,我可以定义一个Product实体,并允许应用程序中的用户使用具有不同数据类型(包括自定义数据类型)的新字段/属性来扩展它。
例:
产品可以具有其他字段,例如:
大小-整数
颜色-字符串
价格-小数
ColouredImage的集合-名称,图像(例如“ Red”,red.jpg(二进制文件))
另一个要求是能够通过这些附加/扩展字段来过滤产品。我应该如何实施呢?
提前致谢。
最佳答案
我认为此链接描述了您想要的东西...
http://ayende.com/Blog/archive/2009/04/11/nhibernate-mapping-ltdynamic-componentgt.aspx
有关动态组件的更多信息:
http://www.mattfreeman.co.uk/2009/01/nhibernate-mapping-with-dynamic-component/
http://bartreyserhove.blogspot.com/2008/02/dynamic-domain-mode-using-nhibernate.html
动态组件背后的想法是,您可以通过不具有属性的数据库列的一对一映射来构建数据模型。取而代之的是,您只有一个字典属性,可以根据需要包含任意多个属性的数据。这样,当您获取实体时,字典将获取配置为属于其中的所有列的数据。您可以扩展数据库表的架构以包括更多列,并且如果您相应地更新映射文件(手动或通过应用程序启动时的代码)来更新数据库表的架构。
老实说,我不知道您可以使用“ attributes”属性查询此类实体,但是如果我不得不猜测的话,我会对其进行IN语句。