我是Fluent的初学者,我遇到的问题可能是我自己的错。
我有一个包含3个类的命名空间。实体,EntityVersion和Property。这些类之间没有涉及继承。
我尝试只映射Entity类,但会发生的是命名空间中的所有类都被映射。我在这里做错了什么?
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2005
.ConnectionString("Data Source=MSCHOPMAN\\SQLEXPRESS;Initial Catalog=framework;Integrated Security=SSPI"))
.Mappings(m =>
{
m.AutoMappings.Add(
AutoMap.AssemblyOf<Entity>()
//.IgnoreBase<Entity>()
.Where(t => t.Namespace == "Modules.Business.Entities")
)
.ExportTo("c:\\temp");
}
)
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
实体类:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using Modules.Data;
namespace Modules.Business.Entities
{
public class Entity
{
public virtual int Id { get; set; }
public virtual int ParentId { get; set; }
public virtual int TypeId { get; set; }
//public virtual IList<EntityVersion> Versions { get; set; }
public Entity()
{
//Versions = new List<EntityVersion>();
}
}
}
答案 0 :(得分:3)
这一行:
.Where(t => t.Namespace == "Modules.Business.Entities")
指示FluentNHibernate映射Modules.Business.Entities
命名空间内的所有对象。如果您只想映射特定类型,可以尝试指定其名称:
.Where(t => t == typeof(Entity))