Привет
У меня есть родительский и дочерний стол, как показано ниже
<?xml version="1.0" encoding="utf-8"?>
------- parent --------------
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="HibernateSample.StudMarks,HibernateSample" table="StudMarks" lazy="false">
<id name="Sno" column="SNO" type="int">
<generator class="assigned"/>
</id>
<many-to-one name="Student" column="ID" not-null="true"/>
<property name="Marks" column="Marks" type="int" not-null="true" />
<property name="Rank" column="Rank" type="int" not-null="true" />
</class>
</hibernate-mapping>
------- child --------------
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="HibernateSample.Student,HibernateSample" table="Student" lazy="false">
<id name="Id" column="ID" type="int">
<generator class="native" />
</id>
<property name="Name" column="Name" type="string" not-null="true" />
<property name="Standard" column="Standard" type="string" not-null="true" />
<bag name="StudMarks" cascade="all" lazy="false">
<key column="ID" not-null="true"/>
<one-to-many class="HibernateSample.StudMarks,HibernateSample" />
</bag>
</class>
</hibernate-mapping>
и в файле .cs у меня есть такой код, как показано ниже для вставки в родительский и дочерний.
StudMarks sm = new StudMarks();
Student st = new Student();
List<StudMarks> sms = new List<StudMarks>();
st.Id = 9;
st.Name = "stud 999";
st.Standard = "99";
sm.Sno = 9;
sm.Marks = 99;
sm.Rank = 9;
sm.Student = st; ------ **Line 1**
st.StudMarks = sms; ------ **Line 2**
session.Save(sm);
session.Flush();
Если я сообщаю "Строка 1" в коде выше, вставляется только дочерний элемент. Если я прокомментирую «Строка 2», выдается ошибка ограничения внешнего ключа.
Таблицы:
CREATE TABLE [dbo].[Student](
[ID] [int] IDENTITY(1,1) NOT NULL, -- PRIMARY KEY
[Name] [varchar](50) NOT NULL,
[Standard] [varchar](50) NOT NULL,
CREATE TABLE [dbo].[StudMarks](
[SNO] [int] NOT NULL, -- PRIMARY KEY
[ID] [int] NOT NULL, -- FOREIGN KEY
[Marks] [int] NOT NULL,
[Rank] [int] NOT NULL,)
Пожалуйста, дайте мне знать, как вставить родительский и дочерний элементы одновременно в одну операцию сохранения.