C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

[NHibernate]プロパティが保存されない


(過去ログ 85 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■50521 / inTopicNo.1)  [NHibernate]プロパティが保存されない
  
□投稿者/ kky (1回)-(2010/06/10(Thu) 00:40:26)

分類:[.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までは保存されないのでしょうか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -