私は誰かが以前にこの問題に遭遇し、私を助けることができることを望んでいます。私のデータベースでは、テーブル間の関係を使用しています
Ex:Authors,Author Books,Booksstore(salesDetails)
**Authors table**
=================
Aid int (Identity and Primarykey),AuthorName varchar(50)
=================
***********
**Author Books table**
=================
BookID int(primary key),BookName nvarchar(50),Aid int (foreign key Authorstable(Aid))
=================
**************
**Booksstore table**
================
StoreID int(primary key),Totalsales int,BookID int (foreign key Author Bookstable(BookID))
================
I'm using Nhibernate and mapping above tables in the following
*********************
**Authorsdao.hdm.xml**
*********************
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Dal" namespace="Dal">
<class name="AurthosDao,Dal" table="Aurthors Table" lazy="true">
<id name="AId" column="AuthorID" type="int">
<generator class="native" />
</id>
<property type="string" not-null="true" length="250" name="Authorname" column="AuthorName" />
</class>
</hibernate-mapping>
*********************
**Authorbooksdao.hdm.xml**
*********************
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Dal" namespace="Dal">
<class name="AurthorBooksDao,Dal" table="AuthorBookstable" lazy="true">
<id name="AId" column="AuthorID">
<generator class="foreign">
<param name="property">AId</param>
</generator>
</id>
<property type="int" not-null="true" name="BookId" column="BookID" />
<property type="string" not-null="true" name="Bookname" column="BookName" />
</class>
</hibernate-mapping>
*********************
**Booksstoredao.hdm.xml**
*********************
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Dal" namespace="Dal">
<class name="BookStoreDao,Dal" table="Bookstoretable" lazy="true">
<id name="BookId" column="BookID">
<generator class="foreign">
<param name="property">BookId</param>
</generator>
</id>
<property type="int" not-null="true" name="StoreId" column="StoreID" />
<property type="int" not-null="true" name="Totalsales" column="TotalSales" />
</class>
</hibernate-mapping>
***************************
Now I have to insert the data from Asp.Net Nhibernate in to 3 tables in one transaction.
1)I'm inserting first in Authors table after that I'm trying to get that last inserting key from Authors table and pushing into Authorsbook table
2)Autthorsbooksテーブルに挿入した後、AuthorsBookテーブルから最後に挿入されたBookIDを取得しようとし、BookStoreテーブルにプッシュします。
何か助けがあれば、それは理解できるでしょう。
Radmin次のパブリックIAuthorsAurthorsdata(PlanningManagerProxyプロキシ、文字列authorName、IBookブック、Ilist、IList属性)でトランザクションを使用しています{AuthorDao dao = new AuthorDao();
using (ITransaction tx = proxy.MarcomManager.GetTransaction())
{
// Business logic of AuthorObjective
dao.Name = authorName;
tx.PersistenceManager.PlanningRepository.Save<AuthorDao>(dao);
tx.Commit();
AuthorDao objList;
using (ITransaction txGet = proxy.GetTransaction())
{
objList = txGet.PersistenceManager.PlanningRepository.Get<AuthorDao>(id);
txGet.Commit();
}
var objId = from a in objList where a.AuthorID == authorId select a;
using (ITransaction tx2 = proxy.MarcomManager.GetTransaction())
{
AuthorbooksDao objdao = new AuthorbooksDao();
objdao.BookId = books.BookID;
objdao.BookName=books.BookName;
objdao.AuthorId= objId.AuthorId;
tx2.PersistenceManager.PlanningRepository.Save<AuthorbooksDao>(objdao);
tx2.Commit();
}
}
}
@Radim最初にAuthorsのトランザクションをコミットし、次にAuthorDao(AuthorsTable)から最後に挿入されたレコードを取得してから、Bookstoreテーブルにプッシュします。しかし、マッピング時に外部キーが挿入を許可していませんか?