我有一个以流畅的nhibernate映射的类,但我希望映射忽略其中一个类属性.
使用下面的类和映射我得到此错误:
以下类型不能用作代理:iMasterengine.Data.Model.Calendar:方法get_HasEvents应该是虚拟的
//my class
public class Calendar : IEntity {
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual string SiteId { get; set; }
public virtual IList<CalendarEvent> Events { get; set; }
//ignore this property
public bool HasEvents { get { return Events.Count > 0; } }
}
//my mapping
public class CalendarMap : ClassMap<Calendar> {
public CalendarMap() {
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.SiteId); …Run Code Online (Sandbox Code Playgroud) 我们有POCO,类似于:
public class Person
{
public Guid PersonID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
public string Version {get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和相应的hbm文件一样
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.FirstAttempt" namespace="NHibernate.FirstAttempt.Entity" >
<class name="Person" lazy="false">
<id name="PersonID">
<generator class="guid" />
</id>
<property name="FirstName" />
<property name="LastName" />
<property name="DateOfBirth" />
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
仔细观察,我们有一个Version属性,数据库中没有列?我们只是希望nHibernate忽略这个属性,这就是我们没有将属性放在映射文件中的原因.但相反,它开始抛出错误.
有没有解决的办法 ?
我试图通过使用多个.Mappings扩展调用手动添加映射类,但似乎只包括最后一个.那么如何添加几个选定的类映射或多个汇编?
我的流畅配置看起来通常如下:
Return Fluently.Configure() _
.Database(SQLiteConfiguration.Standard.ConnectionString(connectionString) _
.Cache(Function(c) c.UseQueryCache())) _
.Mappings(Function(m) m.FluentMappings.AddFromAssemblyOf(Of AccountMap)() _
.Conventions.Add(FluentNHibernate.Conventions.Helpers.DefaultLazy.Never())) _
.ExposeConfiguration(Function(c) InlineAssignHelper(cfg, c)) _
.BuildSessionFactory()
Run Code Online (Sandbox Code Playgroud) .net database nhibernate nhibernate-mapping fluent-nhibernate