2012-02-09 40 views
1

我有以下問題,當我試圖在我的類映射流利地圖ID

Stack trace: 
Inner exception message: could not resolve property: Project_ID of: Messenia.Data.Models.Project 

這裏是我的配置

private StaticHibernate() { 
      new NHibernate.ByteCode.Castle.ProxyFactoryFactory(); 
      SessionFactory = Fluently.Configure() 
       .Database (MySQLConfiguration.Standard 
       .ConnectionString ("database=messenia;server=localhost;uid=root;pwd=root")) 
       .ExposeConfiguration (c => c.Properties.Add ("hbm2ddl.keywords", "none")) 
       .Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<Entity>(new EntityAutoMappingConfiguration()) 

                     .IgnoreBase<Entity>() 
                     .UseOverridesFromAssemblyOf<Entity>() 
                     .Conventions.Add(typeof(PrimaryKeyNamePlusId))))                  .BuildSessionFactory(); 

和:

public class EntityAutoMappingConfiguration : DefaultAutomappingConfiguration 
    { 
     public override bool ShouldMap(Type type) 
     { 
      return type.GetInterfaces().Contains(typeof(IPersistable)); 
     } 


    } 

和:

public class PrimaryKeyNamePlusId : IIdConvention 
    { 
     public void Apply(IIdentityInstance instance) 
     { 
      instance.Column(instance.EntityType.Name + "_ID"); 
     } 
    } 

類項目不包含屬性Project_Id,但它包含支持ID,所以爲什麼我得到這個錯誤?謝謝 。 有人可以幫我解決這個問題嗎?

回答

0

這是一種猜測,因爲我總是發現FNH的默認ID的處理方式是完全滿意的,但是......

我覺得你PrimaryKeyNamePlusId類告訴FNH期待您的實體所有的ID屬性爲_ID形式,但是你說你的Project實體的ID屬性被稱爲「Id」,所以FNH找不到它。

您可以通過在Project中更改屬性名稱來測試

public virtual Guid Project_ID { get; protected set; } 

並查看錯誤是否消失。