0

Je suis très, très nouveau à Nhibernate et j'apprends sur le pouce (douloureusement). J'essaie d'utiliser NHibernate avec Asp .NET Identity 2.0 et définir mon propre magasin. Cependant, j'ai des problèmes -NHibernate.AspNet.Identity FluentNhibernate - comment ajouter un objet personnalisé à mon ApplicationUSer?

Bien que je comprenne les correspondances entre les entités, je n'arrive pas à créer des mappages pertinents entre les entités. Voici ce que j'ai. Une classe de ApplicationUser et la configuration, semblable à: https://github.com/nhibernate/NHibernate.AspNet.Identity

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

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

Et une classe personnage

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

Et voici ma principale section de configuration:

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(); 

Enfin, les applications:

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

et

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

Cependant, chaque fois que je tente de créer et enregistrer un personnage, je reçois: Impossible de déterminer le type pour: SWDB.Domain.RP.Character, SWDB.Domain, pour les colonnes: NHibernate.Mapping. colonne (id)

J'ai bats toute la journée - je donne :(toute aide est appréciée ...

Merci!

Répondre

2

Votre ID est un code qui n'est pas pris en charge par Identity. Spécifier le générateur manuellement

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

merci! –