gpt4 book ai didi

c# - 如何在 Fluent-NHibernate 中级联插入父项、子项和组合列表

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:58 25 4
gpt4 key购买 nike

我正在使用 SQLite,我有这三个表:

用户(身份证,姓名)
项目(编号、名称)
ProjectUser (UserId, ProjectId)

但是在我的映射中,我只有两个 ClassMap:UserMap 映射 User 和 ProjectMap 映射 Project

在我的模型中,User 有一个 Project 列表,Project 有一个 User 列表,一个 多对多关系

当我 session.Save(NewUser) ?

它实际上是我的映射,它正在反转数据库中的列 ProjectIdUserId:

附言:

  • 我尝试颠倒父/子列名称的顺序并尝试在所有组合中删除或放置 Inverse(),有时我已经收到此错误:Abort due to constraint violation\r\nforeign key
    constraint failed
    还有一次我遇到了同样的问题反转列。

  • 我尝试使用自己的代理在每个连接打开后执行 PRAGMA foreign_keys = ON

项目图

Table("TBPROJECT");
Id(x => x.Id);
Map(x => x.ProjectName).Length(100).Not.Nullable();
Map(x => x.TeamProjectURL).Length(100).Not.Nullable();

HasManyToMany(x => x.UserList).Table("TBPROJECTUSER").ParentKeyColumn("UserId").ChildKeyColumn("ProjectId").Inverse();

用户 map

Table("TBUSER");
Id(x => x.Id);
Map(x => x.FullName).Length(100).Not.Nullable();
Map(x => x.Username).Length(100).Not.Nullable();
Map(x => x.Email).Length(100).Not.Nullable();
Map(x => x.Password).Length(100).Nullable();
Map(x => x.Department).Length(100).Nullable();

HasManyToMany(x => x.ProjectList).Table("TBPROJECTUSER").ParentKeyColumn("UserId").ChildKeyColumn("ProjectId").Cascade.All();

最佳答案

我注意到您正在命名您的列(ParentKeyColumnChildKeyColumn)。如果你只是命名你的表并调用 Inverse()Cascade.All(),它会按你想要的方式工作,因为 fluent nhibernate 会创建两列并自行管理。

在您的 ProjectMap 上,您可以这样做:

HasManyToMany(x => x.UserList).Table("TBPROJECTUSER").Inverse();

在您的 UserMap 上,您可以这样做:

HasManyToMany(x => x.ProjectList).Table("TBPROJECTUSER").Cascade.All();

关于c# - 如何在 Fluent-NHibernate 中级联插入父项、子项和组合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23810260/

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