我希望有人以前遇到过这个问题并且可以帮助我。在我的数据库中,我正在使用表之间的关系
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)插入到 AuthorsBooks 表后,尝试从 AuthorsBook 表中获取最后插入的 BookID 并推入 BookStore 表。
如果有任何帮助将不胜感激..
Radmin 我在以下公共 IAuthors Aurthorsdata(PlanningManagerProxy proxy, String authorName,IBook books ,Ilist , IList attributes) { 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表。但是在映射时间时外键不允许插入?