- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本问题:如何在 Fluent NHibernate 中创建双向一对多映射?
详细信息:
我有一个带有许多子对象的父对象。就我而言,子级没有父级是没有意义的,因此在数据库中,我希望父级的外键具有 NOT NULL 约束。我正在从 Fluent NHibernate 映射自动生成数据库。
我有一个带有许多子对象的父对象,如下所示:
public class Summary
{
public int id {get; protected set;}
public IList<Detail> Details {get; protected set;}
}
public class Detail
{
public int id {get; protected set;}
public string ItemName {get; set;}
/* public Summary Owner {get; protected set;} */ //I think this might be needed for bidirectional mapping?
}
这是我开始的映射:
public class SummaryMap : ClassMap<Summary>
{
public SummaryMap()
{
Id(x => x.ID);
HasMany<Detail>(x => x.Details);
}
}
public class DetailMap : ClassMap<Detail>
{
public DetailMap()
{
Id(x => x.ID);
Map(x => x.ItemName).CanNotBeNull();
}
}
在详细信息表中,Summary_id 应该为 Not Null,因为在我的在这种情况下,没有附加到 Detail 对象是没有意义的摘要对象。但是,仅使用 HasMany() 映射会使 Summary_id 外键可为空。
我在 NHibernate 文档 ( http://www.hibernate.org/hib_docs/nhibernate/html/collections.html ) 中发现“如果需要父级,请使用双向一对多关联”。
那么如何在 Fluent NHibernate 中创建双向一对多映射?
最佳答案
要获得与详细信息表中非空外键列的双向关联,您可以添加建议的 Owner 属性、DetailsMap 类中的 References(...).CanNotBeNull() 映射,并使摘要结束逆。
为了避免两个关联方向有两个不同的外键列,您可以手动指定列名称,或者以为两个方向提供相同列名称的方式命名属性。在这种情况下,我建议您将Details.Owner 属性重命名为Details.Summary。
我通过增量生成摘要 id,以避免插入表时出现问题,因为当前摘要除了 id 之外没有列。
域名:
public class Detail
{
public int id { get; protected set; }
public string ItemName { get; set; }
// Renamed to use same column name as specified in the mapping of Summary.Details
public Summary Summary {get; set;}
}
public class Summary
{
public Summary()
{
Details = new List<Detail>();
}
public int id { get; protected set; }
public IList<Detail> Details { get; protected set; }
}
映射:
public class DetailMap : ClassMap<Detail>
{
public DetailMap()
{
Id(x => x.id)
.GeneratedBy.Native();
Map(x => x.ItemName)
.CanNotBeNull();
References<Summary>(x => x.Summary)
// If you don't want to rename the property in Summary,
// you can do this instead:
// .TheColumnNameIs("Summary_id")
.CanNotBeNull();
}
}
public class SummaryMap : ClassMap<Summary>
{
public SummaryMap()
{
Id(x => x.id)
.GeneratedBy.Increment();
HasMany<Detail>(x => x.Details)
.IsInverse()
.AsBag(); // Use bag instead of list to avoid index updating issues
}
}
关于nhibernate - 流畅的 NHibernate : How to create one-to-many bidirectional mapping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/310641/
我想知道是否有可能拥有 RESTful Web 服务以及与客户端和服务器的双向通信。 在我的情况下,服务器上的状态可能会改变,因此服务器应该向客户端发送一条消息来更新它们自己。也许这完全违背了 RES
我有一个表,我在其中使用复合键作为主键。它创建了类似的东西: CREATE TABLE FOO( BAR1 INT, BAR2 INT, PRIMARY KEY (BAR1, BAR2
我刚刚阅读了使用双向搜索的最短路径 Dijkstra 算法的 NetworkX 实现(在 this 处)。这个方法的终点是什么? 最佳答案 我将基于 networkx 的实现。 双向 Dijkstra
假设我们有一个像 Pug : Dog : Mammal : Animal 这样的类层次结构。 . 我想要一个接受 Bag 的函数(其中 Bag 在 T 中是不变的)作为 Dog 的子或父类(super
我只是想知道 Doctrine 与 Symfony 中双向关系的优点/缺点是什么? 我所有的关系都是双向的,但我不确定这是否会导致问题...... 谢谢。 最佳答案 只要您不将关系标记为EAGER,我
我正在尝试在tensor2tensor中创建一个简单的基于LSTM的RNN。 到目前为止,训练似乎有效,但我无法恢复模型。尝试这样做会抛出 NotFoundError ,指出 LSTM 中的偏差节点:
我正在使用 Hibernate 和 JPA 注释。我有一个单向多对多关联,我打算将其设为双向关联。 数据库已包含一些数据。我正在考虑使用 Liquibase 来更新表。有人可以给我一些关于我必须编写的
想法很简单,但我真的不知道如何解决以下问题。 我想计算圆的周长, U = 2*Math.PI*R 因此,U 是周长,R 是圆的半径。单向解决方案很简单。 HTML 代码看起来像 R: U:
我正在使用 crossrider.com 编写一个可移植的浏览器扩展程序。 我的扩展由前端部分(crossrider:扩展页面范围)和后端部分(crossrider:后台范围)组成。后台在每个浏览器上
我有下面的一对多双向关系。 在使用 symfony2 任务生成 crud 操作后,当我尝试在新建/编辑类别表单中保存与类别关联的产品时,产品未保存... namespace Prueba\Fronte
我对 Fluent NHibernate: How to create one-to-many bidirectional mapping? 有类似的问题但是我对一对一映射的情况很感兴趣。例如 Umb
基本问题:如何在 Fluent NHibernate 中创建双向一对多映射? 详细信息: 我有一个带有许多子对象的父对象。就我而言,子级没有父级是没有意义的,因此在数据库中,我希望父级的外键具有 NO
问题:在Windows 7上,由于我们无法使用nfs(自然,无需黑客),Vagrant/Magento这对夫妇的性能非常差。 经过这么多研究,我发现解决该问题的最好方法(也许是唯一)是使用rsync。
在X引用Y,Y有很多X的情况下如何配置双向映射,这样当我在Y实例中添加很多X并保存Y实例时,它会工作正常吗? 为了让问题更清楚,这里是代码: ClientCompany 模型有HasMany Cont
在gRPC中的双向流设置中,如果一方终止TCP连接,例如,如果服务器突然崩溃并重新启动,客户端如何重新建立连接?我们需要手动处理这个问题吗?或者gRPC本身有解决这种情况的机制吗?。原稿文件:。客户服
我正在使用带有 SP1 的 Delphi XE3。我创建了一个 FireMonkey 桌面应用程序,并在主窗体上放置了 TSpinBox 和 TTrackBar。我现在已经使用 Visual Live
我有一个看起来像这样的 Django 模型(当然是简化的): from django.db import models from polymorphic.models import Polymorph
我想要解决的问题是建立一个稳定的连接,以便在 PC 和我的 Raspberry Pi(RPi) 之间交换数据。它们通过路由器通过 LAN 中的 WLAN 连接。 我创建了一种简单的方法,在每个设备上定
我目前在使用 OneToMany/ManyToOne 映射时遇到问题。映射看起来像这样: public class A implements Serializable { @EmbeddedI
你好,我有一个关于 JPA 的问题...... 数据库: Java 类(省略不相关的字段): 用户: @Entity public class User{ @Id private in
我是一名优秀的程序员,十分优秀!