我在我的项目中使用NHibernate 3.1和Fluent NHibernate作为ORM.我需要Fluent NHibernate忽略POCO的属性.起初,我的帖子可能看起来与这个问题完全相同,但事实并非如此.
我的并发症首先来自这样一个事实:POCO的定义与映射不同,我使用流利的映射来进行POCO.我还有其他要求,不要在会话工厂配置发生时编写ingore-property代码(这发生在模块外部的集中位置),而是作为定义映射的模块的一部分.理想情况下,我认为正确的位置将是具体的ClassMap实现,因为它确切地知道如何向ORM描述POCO.
但是,我坚持这个主要是因为这是我对NHibernate及其流畅API的第一次影响.到目前为止,我对其功能和可扩展性有非常好的印象,我希望有一种方法可以通过将映射相关代码封装在相应模块中的方式来实现我的需求.
这是我的配置,从一个集中的地方:
List<Assembly> assemblies = GetModules().Select(x => x.GetType().Assembly).ToList();
ISessionFactory nhibernateSessionFactory = Fluently
.Configure()
.Mappings(m => assemblies.ForEach(asm => m.FluentMappings.AddFromAssembly(asm)))
.Database(
MsSqlConfiguration.MsSql2005
.ShowSql()
.ConnectionString(DatabaseConfig.Instance.ConnectionString))
.ExposeConfiguration(c => new SchemaUpdate(c).Execute(true, true))
.BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
我使用继承自的标准类映射ClassMap:
public class User
{
public virtual int ID { get; set; }
public virtual String Username { get; set; }
public virtual String Password { get; set; }
public virtual DateTime DateCreated { get; set; }
public virtual …Run Code Online (Sandbox Code Playgroud)