2015-09-02 53 views
0

繼承所有課程我有了一個項目:流利的NHibernate映射忽略了從通用基礎類

Repository Project: 
[ 
    Models: 
    [ 
     StudentEntity 
     ClassEntity 
    ] 
    Overrides: 
    [ 
     StudentEntityOverride 
     ClassEntityOverride 
    ] 

    RepositoryObject 
] 

的RepositoryObject類從基類回購< TEntity的繼承,TOverride >當我設置的映射:

AutoMap 
.AssemblyOf<TEntity>()    
.UseOverridesFromAssemblyOf<TOverride>() 
.Conventions.Add(DefaultLazy.Never()) 
.Conventions.Add(DefaultCascade.SaveUpdate()); 

由於RepositoryObject沒有映射ID,它會失敗。回購基礎類和會話工廠設置和映射位於nuget包中,因此不能直接更改。我想這樣做是可以設置的映射則會忽略從回購< TEntity繼承任何類,TOverride >

回答

1

你可以破例這樣的可能:

AutoMap.AssemblyOf<TEntity>().Where(x => x != typeof (Repo<TEntity, TOverride>)); 
+1

這讓我最那裏的路。 .Where(x =>!x.IsSubclassOf(typeof(Repo ))) – Jon