gpt4 book ai didi

nhibernate - 流利的NHibernate HasManyToMany()映射

转载 作者:行者123 更新时间:2023-12-04 03:24:47 25 4
gpt4 key购买 nike

我在使用多对多关系的Fluent NHibernate示例中遇到问题。我试图找出类似案例的例子,但发现了很多吨,但我仍然遇到同样的问题。

运行测试项目时,将引发以下异常:

NHibernate.PropertyAccessException:项目.Entities.User.UserName的 setter/getter 发生异常---> System.Reflection.TargetException:对象不
匹配目标类型。

这是表的图像:

和代码

 public UsersMap()
{

this.Table("Users");
Id(x => x.UserName).Column("Username").GeneratedBy.Assigned();

Map(x => x.FirstName);
Map(x => x.LastName);
Map(x => x.Password);
Map(x =>x.EMail);
Map(x => x.Title);
Map(x => x.Division);


HasManyToMany<User>(x => x.Roles)
.Table("UserInRoles").ParentKeyColumn("Username")
.ChildKeyColumn("Usernamepk")
.Cascade.SaveUpdate().LazyLoad();


}

public RolesMap()
{
this.Table("Roles");
Id(x => x.ID).GeneratedBy.Assigned().Column("ID");
Map(x => x.RoleName).Length(50);

HasManyToMany<User>(x => x.Users)
.Table("UserInRoles").ParentKeyColumn("ID")
.ChildKeyColumn("RoleIdpk").Cascade.SaveUpdate().LazyLoad();

}

这是代码,网络上的大多数示例和Fluent Nhibernate映射页面都是以相同的方式编写的,所以有什么想法吗?

最佳答案

关于我在项目中使用的代码,我将以这种方式定义您的manyTomany关系:

 public UsersMap()
{
...
HasManyToMany(x => x.Roles)
.WithTableName("UserInRoles")
.WithParentKeyColumn("Usernamepk")
.WithChildKeyColumn("RoleIdpk");
}

public RolesMap()
{
...
HasManyToMany(x => x.Users)
.WithTableName("UserInRoles")
.WithParentKeyColumn("RoleIdpk")
.WithChildKeyColumn("Usernamepk");

}

这样的定义对我有用。
首先选中此选项,然后使用LazyLoading和其他一些属性进行装饰。

关于nhibernate - 流利的NHibernate HasManyToMany()映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1321416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com