在另一个组件中扩展流畅的nhibernate映射

时间:2010-05-03 21:13:17

标签: c# asp.net-mvc nhibernate fluent-nhibernate

我在我的ASP.Net MVC应用程序中使用NHibernate。 我正在为我的应用程序编写一些扩展(插件)。我正在动态加载这些插件(来自不同的程序集)。 在我的基础应用程序中,我定义了许多实体和映射(用户,组等)

我需要在扩展中创建新实体,因此我正在创建新闻模块,因此我需要创建新闻映射。 在数据库中,News表具有User表的外键。 有什么办法可以修改我的用户映射,所以它会有:

HasMany(x => x.News)
  .KeyColumn("UserId")
  .Inverse();

或者唯一的方法是更改​​我的User类中的代码并重新编译项目?

我不是NHibernate的高级用户,所以任何帮助都将受到赞赏。 TIA。

2 个答案:

答案 0 :(得分:1)

流利的NHibernate可能会有所帮助

查看Fluent Mapping上的部分,或者更好的Auto Mapping

如果您无法使用默认值,则可以为各个属性覆盖自动映射。此外,使用流畅的NHibernate,您可以为主键,外键等指定自己的默认值。

答案 1 :(得分:1)

您可以自动执行多个程序集,例如

AutoMap.Assemblies(Assembly.GetExecutingAssembly(), 
                   typeof(MyType).Assembly)

将映射执行程序集和包含“MyType”的程序集。

请注意,这是FNH中的一项相对较新的功能(2010年2月19日),因此请确保您拥有最新版本。

不确定这在动态加载情况下是如何工作的,但我认为这更像是如何获得程序集列表(可能是通过反射)而不是NHibernate本身。