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

只有一个好奇的心

我正在使用SQLite,并且具有以下三个表:

User (Id, Name) Project (Id, Name) ProjectUser (UserId, ProjectId)

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

在我的模型User有一个列表Project,并Project有一个列表User,一个many-to-many relationship

我该如何创建User的新实例,Project的新实例,将项目添加到user的ProjectList中,并在插入时插入所有(用户,项目和userproject)session.Save(NewUser)

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

PS:

  • 我试图反转父/子列名称的顺序,并尝试删除或放入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();

用户地图

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();
吉尔赫姆·奥利维拉(Guilherme Oliveira)

我注意到您正在命名您的列(ParentKeyColumnChildKeyColumn)。如果您只是命名表并调用Inverse()Cascade.All(),则可以使用它,因为流利的nhibernate会创建两个列并自己进行管理,因此它将按您的意愿工作。

ProjectMap上,您可以执行以下操作:

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

在您的UserMap上,您可以执行以下操作:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Laravel4中级联软删除?

来自分类Dev

如何在Django中基于子项过滤父项

来自分类Dev

设置NHibernate Fluent以进行级联操作。

来自分类Dev

如何使用Fluent NHibernate覆盖单个LINQ查询的延迟加载

来自分类Dev

父项和子项的订单列表

来自分类Dev

如何在javafx中自动调整子项的大小(子项是Pane,父项是VBox)

来自分类Dev

如何实现带有父项和子项的组合框的层次结构?

来自分类Dev

如何在KeyDown事件上打开组合框的下拉列表(组合项)?

来自分类Dev

如何使用Fluent NHibernate区分父级关系的列

来自分类Dev

如何在Fluent NHibernate中将一对一关系映射为复合键的一部分

来自分类Dev

如何让父项(相对)根据子项(绝对)div扩展

来自分类Dev

通过级联删除子项时如何使父项记录数据可用

来自分类Dev

Fluent,NHibernate和PredicateBuilder

来自分类Dev

使用Fluent.NHibernate,如何基于Select语句执行插入

来自分类Dev

如何在Postgres中级联表的列的数据类型

来自分类Dev

在Fluent / Vapor 4中,如何根据外键过滤列表?

来自分类Dev

如何在Fluent NHibernate中设置默认级联

来自分类Dev

父项和子项的订单列表

来自分类Dev

如何实现带有父项和子项的组合框的层次结构?

来自分类Dev

如何在json数组中为每个子项添加父项?

来自分类Dev

如何在Fluent NHibernate中将一对一关系映射为复合键的一部分

来自分类Dev

如何在验证列表中组合范围和确定的值?

来自分类Dev

如何使用Fluent NHibernate映射CompositeId的引用

来自分类Dev

如何从剑道树视图中级联剑道下拉列表

来自分类Dev

如何在Fluent断言中正确组合Use和WhileTypeIs <DateTime>

来自分类Dev

Fluent NHibernate 多抽象类继承。如何在不为抽象类的 db 中创建表的情况下为每个具体类创建表

来自分类Dev

如何单击其子项包含特定文本的父项

来自分类Dev

如何在excel中创建级联列表?

来自分类Dev

如何遍历 JSON 项和 JSON 子项

Related 相关文章

  1. 1

    如何在Laravel4中级联软删除?

  2. 2

    如何在Django中基于子项过滤父项

  3. 3

    设置NHibernate Fluent以进行级联操作。

  4. 4

    如何使用Fluent NHibernate覆盖单个LINQ查询的延迟加载

  5. 5

    父项和子项的订单列表

  6. 6

    如何在javafx中自动调整子项的大小(子项是Pane,父项是VBox)

  7. 7

    如何实现带有父项和子项的组合框的层次结构?

  8. 8

    如何在KeyDown事件上打开组合框的下拉列表(组合项)?

  9. 9

    如何使用Fluent NHibernate区分父级关系的列

  10. 10

    如何在Fluent NHibernate中将一对一关系映射为复合键的一部分

  11. 11

    如何让父项(相对)根据子项(绝对)div扩展

  12. 12

    通过级联删除子项时如何使父项记录数据可用

  13. 13

    Fluent,NHibernate和PredicateBuilder

  14. 14

    使用Fluent.NHibernate,如何基于Select语句执行插入

  15. 15

    如何在Postgres中级联表的列的数据类型

  16. 16

    在Fluent / Vapor 4中,如何根据外键过滤列表?

  17. 17

    如何在Fluent NHibernate中设置默认级联

  18. 18

    父项和子项的订单列表

  19. 19

    如何实现带有父项和子项的组合框的层次结构?

  20. 20

    如何在json数组中为每个子项添加父项?

  21. 21

    如何在Fluent NHibernate中将一对一关系映射为复合键的一部分

  22. 22

    如何在验证列表中组合范围和确定的值?

  23. 23

    如何使用Fluent NHibernate映射CompositeId的引用

  24. 24

    如何从剑道树视图中级联剑道下拉列表

  25. 25

    如何在Fluent断言中正确组合Use和WhileTypeIs <DateTime>

  26. 26

    Fluent NHibernate 多抽象类继承。如何在不为抽象类的 db 中创建表的情况下为每个具体类创建表

  27. 27

    如何单击其子项包含特定文本的父项

  28. 28

    如何在excel中创建级联列表?

  29. 29

    如何遍历 JSON 项和 JSON 子项

热门标签

归档