[英]One-to-one Mapping issue with NHibernate/Fluent: Foreign Key not updateing
[英]Fluent NHibernate one to one mapping insert issue
基于波纹管映射检索值时,一对一映射效果很好。 但是在插入值时
无法解析属性:MasterData
被抛出。
下表列出
MasterDataTable [MasterDataID(PK),名称]
OtherDataTable [MasterDataID(PK)(FK),OtherName]
流利的NHibernare课程是
Public class MasterData{
public virtual long MasterDataID {get;set;}
public virtual string Name {get;set;}
public virtual OtherData OtherDataProp {get;set;}
}
public class OtherData{
public virtual long MasterDataID {get;set;}
public virtual string OtherName {get;set;}
}
public class MasterDataMap: ClassMap<MasterData>{
public MasterDataMap(){
//table declaration
Id(x => x.MasterDataID).Column("MasterDataID").GeneratedBy.gui.Sequence("MASTER_DATA_SEQ");
Map(x => x.Name).Column("Name");
}
}
public class OtherDataMap: ClassMap<OtherData>{
public OtherDataMap(){
//table declaration
Id(x => x.MasterDataID, "MASTER_DATA_ID").GeneratedBy.Foreign("MasterData")
Map(x => x.Name).Column("OtherName");
}
}
请让我知道需要其他什么信息来解决此问题。 我能够检索值,但是当我插入值时我无法。
问候,戴斯蒙德
在您的情况下,将存在一对一的映射(唯一ID可能只有一个MasterData
实例,而另一个OtherData
)。 在这种情况下, 从属实体OtherData
也必须引用其主 MasterData
public class OtherData
{
public virtual long MasterDataID {get;set;}
public virtual string OtherName {get;set;}
public virtual MasterData MasterData {get;set;}
}
然后,我们可以按照以下链接正确地一对一映射: https : //github.com/jagregory/fluent-nhibernate/wiki/Fluent-mapping
public MasterDataMap()
{
Id(x => x.MasterDataID).Column("MasterDataID")
.GeneratedBy.gui.Sequence("MASTER_DATA_SEQ");
Map(x => x.Name).Column("Name");
HasOne(x => x.OtherData);
}
public OtherDataMap()
{
Id(x => x.MasterDataID, "MasterDataID")
.GeneratedBy.Foreign("MasterData")
Map(x => x.OtherName).Column("OtherName"); // change from x.Name
HasOne(x => x.MasterData);
}
我们试图实现的是用XML来实现
<class name="MasterData" ...>
...
<one-to-one cascade="delete-orphan" lazy="proxy" name="OtherData />
..
</class>
<class name="OtherData" ...>
<id name="MasterDataID" column="MasterDataId">
<generator class="foreign">
<param name="property">MasterData</param>
</generator>
</id>
<one-to-one name="MasterData" constrained="true" />
...
</class>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.