AutoMap.AssemblyOf映射整个命名空间

时间:2009-10-20 19:11:47

标签: fluent-nhibernate mapping

我是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>();
        }
    }
 }

1 个答案:

答案 0 :(得分:3)

这一行:

.Where(t => t.Namespace == "Modules.Business.Entities")

指示FluentNHibernate映射Modules.Business.Entities命名空间内的所有对象。如果您只想映射特定类型,可以尝试指定其名称:

.Where(t => t == typeof(Entity))