|
分類:[.NET 全般]
使用言語 C# .net 3.5
NHibernateのバージョン 2.1.2
DB OleDB
下記構成、コーディングで「Book」クラスの「Author」プロパティが保存されません。
--以下コード--
[Book.cs]
namespace Sample.Model
{
public class Book
{
private string _Isbn;
private string _Title;
private DateTime _Date;
private int _Price;
private Author _Author;
public string Isbn
{
get { return _Isbn; }
set { _Isbn = value; }
}
…以下他プロパティ定義
[Author.cs]
namespace Sample.Model
{
public class Author
{
private int _Id;
private string _Name;
private string _Tel;
private DateTime _RegDate;
public int Id
{
get { return _Id; }
set { _Id = value; }
}
…以下他プロパティ定義
[Book.hbm.xml(マッピングファイル)]
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Sample.Model.Book, Sample" table="Book" lazy="false">
<id name="Isbn">
<generator class="assigned" />
</id>
<property name="Title" />
<property name="Price" />
<property name="Date"/>
<many-to-one name="Author" column="AuthorId"/>
</class>
</hibernate-mapping>
[Author.hbm.xml]
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Sample.Model.Author, Sample" table="Author" lazy="false">
<id name="Id">
<generator class="assigned" />
</id>
<property name="Name" />
<property name="Tel" />
<property name="RegDate"/>
</class>
</hibernate-mapping>
[ロジッククラス Main.cs]
public Main()
{
//NHibernateの接続設定
Configuration cfg = new Configuration();
//アセンブリの登録
cfg.AddAssembly("Sample");
ISessionFactory factory = cfg.BuildSessionFactory();
//セッションの取得
ISession session = factory.OpenSession();
//トランザクションの開始
ITransaction transction = session.BeginTransaction();
//オブジェクトに値をセット
Book book = new Book();
book.Isbn = "497654321";
book.Title = "NHibernate入門";
book.Price = 4500;
book.Date= new DateTime(2005, 8, 1);
book.Author = new Author() { Id = 2, Name = "A", RegDate = DateTime.Now, Tel = "0000" };
session.SaveOrUpdate(book);
//書き込み(トランザクションをコミット)
transction.Commit();
session.Close();
}
上記コードをビルド、実行すると「Book」オブジェクトは保存されテーブルに1レコード生成されるのですが
「Author」オブジェクトが保存されません。book.Authorを保存すれば「Author」テーブルに1レコード追加される
ところまでは確認しました。
bookオブジェクトの保存だけではbook.Authorまでは保存されないのでしょうか?
|