我在我的ASP.Net MVC应用程序中使用NHibernate。 我正在为我的应用程序编写一些扩展(插件)。我正在动态加载这些插件(来自不同的程序集)。 在我的基础应用程序中,我定义了许多实体和映射(用户,组等)
我需要在扩展中创建新实体,因此我正在创建新闻模块,因此我需要创建新闻映射。 在数据库中,News表具有User表的外键。 有什么办法可以修改我的用户映射,所以它会有:
HasMany(x => x.News)
.KeyColumn("UserId")
.Inverse();
或者唯一的方法是更改我的User类中的代码并重新编译项目?
我不是NHibernate的高级用户,所以任何帮助都将受到赞赏。 TIA。
答案 0 :(得分:1)
流利的NHibernate可能会有所帮助
查看Fluent Mapping上的部分,或者更好的Auto Mapping
如果您无法使用默认值,则可以为各个属性覆盖自动映射。此外,使用流畅的NHibernate,您可以为主键,外键等指定自己的默认值。
答案 1 :(得分:1)
您可以自动执行多个程序集,例如
AutoMap.Assemblies(Assembly.GetExecutingAssembly(),
typeof(MyType).Assembly)
将映射执行程序集和包含“MyType”的程序集。
请注意,这是FNH中的一项相对较新的功能(2010年2月19日),因此请确保您拥有最新版本。
不确定这在动态加载情况下是如何工作的,但我认为这更像是如何获得程序集列表(可能是通过反射)而不是NHibernate本身。