Каскадное значение для свойства в частичном классе - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть отображение и 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;
            }
        }
 }

1 Ответ

0 голосов
/ 05 ноября 2018

отредактировано, чтобы отразить обсуждение : поскольку tblFNamesFeature является таблицей «многие ко многим», необходимо настроить отображение с обратным = «false», чтобы указать, что другой конец отношения не отвечает за сохранение Коллекция.

cascade = "all" также необходимо установить (это относится к сохранению, обновлению и удалению).

...