0

我對Nhibernate非常非常新,而且我在旅途中學習(痛苦)。NHibernate.AspNet.Identity FluentNhibernate - 如何將自定義對象添加到我的ApplicationUSer?

我想用NHibernate與Asp .NET Identity 2.0並設置自己的商店。然而,我有問題 -

雖然我理解實體之間的映射,但似乎無法在實體之間創建相關映射。這是我的。一個ApplicationUser類和設置,類似於:

public class Character 
{ 
    public virtual Guid Id { get; set; } 
    public virtual ApplicationUser ApplicationUser { get; set; } 
} 

這裏https://github.com/nhibernate/NHibernate.AspNet.Identity

public class ApplicationUser : IdentityUser 
{ 
    public virtual IList<Character> Characters { get; set; } 

    public ApplicationUser() 
    { 
     Characters = new List<Character>(); 
    } 
} 

和字符類是我的主要構成部分:

var configuration = Fluently.Configure() 
      .Database(
       MsSqlConfiguration.MsSql2012.ConnectionString(
        "server=localhost;database=SWDB;trusted_connection=true;")) 
      .Mappings(x=>x.FluentMappings.AddFromAssemblyOf<CharacterMapping>()) 
      .ExposeConfiguration(cfg => 
      { 
       cfg.SetProperty("current_session_context_class", "web"); 
       cfg.AddDeserializedMapping(
        MappingHelper.GetIdentityMappings(myEntities), null); 
       new SchemaExport(cfg).Create(false, true); 
      }).BuildConfiguration(); 

最後的映射:

public class ApplicationUserMapping : SubclassMap<ApplicationUser> 
{ 
    public ApplicationUserMapping() 
    { 
     HasMany(x => x.Characters).Inverse().Cascade.All(); 
    } 
} 

public class CharacterMapping : ClassMap<Character> 
{ 
    public CharacterMapping() 
    { 
     Id(x => x.Id); 
     References(x => x.ApplicationUser).Cascade.All(); 
    } 
} 

然而,每當我試圖創建並保存一個角色,我得到:無法確定類型:SWDB.Domain.RP.Character,SWDB.Domain,爲列:NHibernate.Mapping。列(ID)

我這個整天一直纏鬥 - 我放棄:(任何幫助表示讚賞...

謝謝!

回答

2

你的ID是一個不受身份支持的Guid。手動指定發生器

public class CharacterMapping : ClassMap<Character> 
{ 
    public CharacterMapping() 
    { 
     Id(x => x.Id).GeneratedBy.GuidComb(); 
     References(x => x.ApplicationUser).Cascade.All(); 
    } 
} 
+0

belayed thanks! –

相關問題