仅在特定命名空间下自动映射

时间:2015-05-10 19:09:53

标签: c# automapper fluent-nhibernate-mapping

我不知道为什么但是通过这个设置,automap也试图映射BaseClass,我该如何解决这个问题?

  

实体' BaseClass`1'没有ID映射。使用Id方法   映射您的身份属性。例如:Id(x => x.Id)。

    _sessionFactory = Fluently.Configure()                      
    .Database(MsSqlConfiguration.MsSql2008.ConnectionString(ConnectionString).ShowSql())
    .Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<Foo.E.MenuItem>()
    .Where(t => t.Namespace == "Foo")
    .Setup(cfg => { cfg.FindIdentity = member => member.Name == member.DeclaringType.Name + "Id"; }))
    .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
    .BuildSessionFactory();

命名空间X

public partial class BaseClass<T>
{
    //somecode
}

命名空间Foo

public class MenuItem : BaseClass<MenuItem>
{
    public virtual int MenuItemId { get; set; }
    public virtual string Text { get; set; }
    public virtual int ParentId { get; set; }
    public virtual IList<MenuItem> Children { get; set; }
    public virtual MenuItem Parent { get; set; }

    public MenuItem()
    {
        Children = new List<MenuItem>();
    }
}

1 个答案:

答案 0 :(得分:0)

IgnoreBase解决了我的问题。

 .Mappings(m => m.AutoMappings.Add( AutoMap.AssemblyOf<T>()
 .IgnoreBase(typeof(BaseClass<>))