Nhibernate Nhibernat映射aspnet_用户表
我要映射到aspnet_用户的我的用户表:Nhibernate Nhibernat映射aspnet_用户表,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我要映射到aspnet_用户的我的用户表: <class name="User" table="`User`"> <id name="ID" column="ID" type="Int32" unsaved-value="0"> <generator class="native" /> </id> <property name="UserId" column="UserId" type="Guid"
<class name="User" table="`User`">
<id name="ID" column="ID" type="Int32" unsaved-value="0">
<generator class="native" />
</id>
<property name="UserId" column="UserId" type="Guid" not-null="true" />
<property name="FullName" column="FullName" type="String" not-null="true" />
<property name="PhoneNumber" column="PhoneNumber" type="String" not-null="false" />
</class>
我的aspnet_用户表:
<class name="aspnet_Users" table="aspnet_Users">
<id name="ID" column="UserId" type="Guid" />
<property name="UserName" column="UserName" type="string" not-null="false" />
</class>
我尝试添加一对一、一对多和多对一映射。我能得到的最接近的错误是:类型为“System.Guid”的对象无法转换为类型为“System.Int32”
如何通过User中的UserId列创建从User到aspnet_User的单向映射
我只想创建一个引用,这样我就可以提取只读信息、影响排序等。我仍然需要像现在一样在用户设置中保留UserId列。可能是一个虚拟引用键入了UserId?这对Nhibernate有可能吗
不幸的是,它的行为就像它只想使用用户ID映射到aspnet_用户。此时,将表用户的主键更改为UserId而不是ID不是一个选项
任何帮助都将不胜感激。提前感谢。Aspnet\u用户表具有Guid类型的主键 表用户的主键类型为Int32 您可以查看这一点,因为您的用户表对aspnet_users表有一个一对一的引用 但是,如果你看aspnet_users表,就好像它是一个分配给用户的“价值篮子”,就像你有一种类型的用户管理员、版主,…,但那将是多对一引用,许多用户有一种类型,你可以这样映射它 因此: 映射将使用fluent.NHibernate:
public class User_Map : ClassMap<User>
{
public User_Map()
{
Table("User");
ID(x => x.ID).GeneratedBy.Native();
References(x => x.UserId);
Map(x => x.FullName);
Map(x => x.PhoneNumber);
}
}
public class AspnetUser_Map : ClassMap<AspnetUser>
{
public User_Map()
{
Table("aspnet_Users");
ID(x => x.ID).GeneratedBy.Assigned();
Map(x => x.UserName);
}
}
为了获得更多关于这方面的指导,请查看该项目。他们已经创建了一个完整的成员资格提供程序实现,它在幕后使用NHibernate。另一方面,您应该尝试使用Fluent NHibernate来替换手动编写的XML映射,这使映射内容更加简单,尤其是如果您是NHibernate新手,那么您可以尝试使用映射XML。
public class User_Map : ClassMap<User>
{
public User_Map()
{
Table("User");
ID(x => x.ID).GeneratedBy.Native();
References(x => x.UserId);
Map(x => x.FullName);
Map(x => x.PhoneNumber);
}
}
public class AspnetUser_Map : ClassMap<AspnetUser>
{
public User_Map()
{
Table("aspnet_Users");
ID(x => x.ID).GeneratedBy.Assigned();
Map(x => x.UserName);
}
}