[seasar-dotnet:579] MDB 利用時にオートナンバーの列に正しく Insert できない

Atsushi   Kondou [E-MAIL ADDRESS DELETED]
2007年 8月 20日 (月) 15:32:23 JST


近藤と申します。

MDBをデータベースとしてS2Dao.Netを利用しています。
オートナンバーの列を主キーとしたテーブルへのInsertを実行した際以下のエラーが出ます。

[ESSR0007]_sqlはnullあるいは空であってはいけません

エンティティーの対象列のプロパティは、以下のように設定しています
[ID(IDType.IDENTITY,KindOfDbms.MDB)]
public long? Id{
	get{
		return id;
	}
	set{
		id = value;
	}
}

IDは、NULLを渡しているのを確認しています

ソースをダウンロードしていろいろ調べてみたのですが、
Seasar.Dao.Id::IdentityIdentifierGenerator→SetIdentifierのメソッド内の
ExecuteSqlにnullを渡しているのがエラーの原因のようでした。
  object value = ExecuteSql(ds, this.Dbms.IdentitySelectString, null);
  this.Dbms.IdentitySelectString ← null
  
Seasar.Dao.Dbms::MDBにIdentitySelectStringのメソッドがなかったため
以下を追加した所、正常にInsert出来、追加行のIDも拾ってきたのを確認しました。

public override string IdentitySelectString
{
    get { return "select @@identity"; }
}

他の回避策があるのでしたら教えて下さい。
もし、私の修正が正しいのでしたら、対応していただければ安心します。

どうぞよろしくお願いします。



seasar-dotnet メーリングリストの案内