NHibernate.AspNet.Identity FluentNhibernate - 如何将自定义对象添加到我的 ApplicationUSer?
NHibernate.AspNet.Identity FluentNhibernate - how do I add a custom object to my ApplicationUSer?
我对 Nhibernate 非常非常陌生,而且我正在学习(痛苦地)。
我正在尝试将 NHibernate 与 Asp .NET Identity 2.0 一起使用并设置我自己的商店。但是,我遇到了问题 -
虽然我了解实体之间的映射,但我似乎无法在实体之间创建相关映射。这是我所拥有的。一个 ApplicationUser class 和设置,类似于:https://github.com/nhibernate/NHibernate.AspNet.Identity
public class ApplicationUser : IdentityUser
{
public virtual IList<Character> Characters { get; set; }
public ApplicationUser()
{
Characters = new List<Character>();
}
}
还有一个角色class
public class Character
{
public virtual Guid Id { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
这是我的主要配置部分:
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.Column(id)
我整天都在与此作斗争-我放弃了:(感谢任何帮助...
谢谢!
您的 ID 是一个不受 Identity 支持的 Guid。手动指定生成器
public class CharacterMapping : ClassMap<Character>
{
public CharacterMapping()
{
Id(x => x.Id).GeneratedBy.GuidComb();
References(x => x.ApplicationUser).Cascade.All();
}
}
我对 Nhibernate 非常非常陌生,而且我正在学习(痛苦地)。
我正在尝试将 NHibernate 与 Asp .NET Identity 2.0 一起使用并设置我自己的商店。但是,我遇到了问题 -
虽然我了解实体之间的映射,但我似乎无法在实体之间创建相关映射。这是我所拥有的。一个 ApplicationUser class 和设置,类似于:https://github.com/nhibernate/NHibernate.AspNet.Identity
public class ApplicationUser : IdentityUser
{
public virtual IList<Character> Characters { get; set; }
public ApplicationUser()
{
Characters = new List<Character>();
}
}
还有一个角色class
public class Character
{
public virtual Guid Id { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
这是我的主要配置部分:
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.Column(id)
我整天都在与此作斗争-我放弃了:(感谢任何帮助...
谢谢!
您的 ID 是一个不受 Identity 支持的 Guid。手动指定生成器
public class CharacterMapping : ClassMap<Character>
{
public CharacterMapping()
{
Id(x => x.Id).GeneratedBy.GuidComb();
References(x => x.ApplicationUser).Cascade.All();
}
}