部分 class 中 属性 的级联值
Cascade value for property in partial class
我有一个映射和 POCO,如下所示。问题是保存此对象时 tbFNamesFeature
未更新(而 tblFeature
是)
我已经为 cascade
尝试了不同的值,但没有效果,所以我不得不说有些事情我没有得到。 (请参阅 xml 中的 ???)。
我做错了什么?
tbFNamesFeature
有 2 列:
FNamesId (PK, int, not null)
FeatureId (PK, int, not null)
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Feature, Infrastructure.Interface"
table="tblFeature">
<id name="Id" type="Int32" unsaved-value="0">
<column name="FeatureId" sql-type="int" not-null="true" unique="true" index="PK_tblFeature" />
<generator class="native" />
</id>
<property name="Description" type="String">
<column name="Description" length="100" sql-type="varchar" not-null="false" />
</property>
<bag name="FNames" table="tbFNamesFeature" inverse="true" lazy="false" cascade="???">
<key>
<column name="FeatureId" sql-type="int" not-null="true" />
</key>
<many-to-many class="FName, Infrastructure.Interface">
<column name="FNamesId" sql-type="int" not-null="true" />
</many-to-many>
</bag>
</class>
</hibernate-mapping>
Feature.cs
public partial class Feature : System.IComparable
{
protected int id;
protected string description;
public virtual int Id
{
get { return this.id; }
set { this.id = value; }
}
public virtual string Description
{
get { return this.description; }
set { this.description = value; }
}
}
Feature.part.cs
public partial class Feature : System.IComparable
{
private System.Collections.Generic.IList<FName> fnames;
public virtual System.Collections.Generic.IList<FName> FNames
{
get
{
if (this.fnames == null)
{
this.fnames = new System.Collections.Generic.List<FName>();
}
return this.fnames;
}
set {
this.fnames = value;
}
}
}
编辑以反映讨论:由于 tblFNamesFeature 是多对多 table,需要使用 inverse="false" 设置映射表明关系的另一端不负责保存集合。
cascade="all"也需要设置(包括保存、更新和删除)。
我有一个映射和 POCO,如下所示。问题是保存此对象时 tbFNamesFeature
未更新(而 tblFeature
是)
我已经为 cascade
尝试了不同的值,但没有效果,所以我不得不说有些事情我没有得到。 (请参阅 xml 中的 ???)。
我做错了什么?
tbFNamesFeature
有 2 列:
FNamesId (PK, int, not null)
FeatureId (PK, int, not null)
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Feature, Infrastructure.Interface"
table="tblFeature">
<id name="Id" type="Int32" unsaved-value="0">
<column name="FeatureId" sql-type="int" not-null="true" unique="true" index="PK_tblFeature" />
<generator class="native" />
</id>
<property name="Description" type="String">
<column name="Description" length="100" sql-type="varchar" not-null="false" />
</property>
<bag name="FNames" table="tbFNamesFeature" inverse="true" lazy="false" cascade="???">
<key>
<column name="FeatureId" sql-type="int" not-null="true" />
</key>
<many-to-many class="FName, Infrastructure.Interface">
<column name="FNamesId" sql-type="int" not-null="true" />
</many-to-many>
</bag>
</class>
</hibernate-mapping>
Feature.cs
public partial class Feature : System.IComparable
{
protected int id;
protected string description;
public virtual int Id
{
get { return this.id; }
set { this.id = value; }
}
public virtual string Description
{
get { return this.description; }
set { this.description = value; }
}
}
Feature.part.cs
public partial class Feature : System.IComparable
{
private System.Collections.Generic.IList<FName> fnames;
public virtual System.Collections.Generic.IList<FName> FNames
{
get
{
if (this.fnames == null)
{
this.fnames = new System.Collections.Generic.List<FName>();
}
return this.fnames;
}
set {
this.fnames = value;
}
}
}
编辑以反映讨论:由于 tblFNamesFeature 是多对多 table,需要使用 inverse="false" 设置映射表明关系的另一端不负责保存集合。
cascade="all"也需要设置(包括保存、更新和删除)。