0

iSeriesDB2スキーマに次の表があります。

CREATE TABLE LATHAM1.SGINES1.LICVP010
  (ID FOR COLUMN ID10 BIGINT NOT NULL PRIMARY KEY,
   CompanyCode FOR COLUMN CONO10 CHARACTER (2) CCSID 37 NOT NULL,
   CreateDate FOR COLUMN CDAT10 DATE not null);

およびテーブルの次のマッピング:

public class OrderReferenceID
{
    public virtual long ID { get; set; }
    public virtual string CompanyName { get; set; }
    public virtual DateTime CreationDate { get; set; }
}

public class OrderReferenceIDMap : ClassMap<OrderReferenceID>
{
    public OrderReferenceIDMap()
    {
        Table("LICVP010");
        Id(x => x.ID, "ID10")
            .GeneratedBy.Native()
            .Not.Nullable();
        Map(x => x.CompanyName, "CONO10")
            .Length(2)
            .Not.Nullable();
        Map(x => x.CreationDate, "CDAT10");
    }
}

および次のコード:

ISessionFactory sessionFactory = CreateSessionFactory();

using (var session = sessionFactory.OpenSession())
{
    OrderReferenceID newID = new OrderReferenceID { CompanyName = "LI", CreationDate = DateTime.Now.Date };

    session.Save(newID);
    session.Flush();
    session.Close();
}

これを実行すると、エラーが発生します。

A conversion error occurred.

これは、CLRDateTimeからDB2Dateオブジェクトへの変換が原因で発生しているようです。

これを適切にマッピングするにはどうすればよいですか?

4

1 に答える 1

1

この行を変更することがわかりました

Map(x => x.CreationDate, "CDAT10"); 

これに

Map(x => x.CreationDate, "CDAT10")
    .CustomType("Date");

問題を修正しました。

于 2012-09-06T21:43:00.120 に答える