Matisse を使用するのは非常に新しいので、これが間違っているのか、それとも何かをしているだけなのかわかりません。システムのユーザー名とパスワードを含むテーブルと、次の方法があります...
public List<Users> FindUsers()
{
List<Users> users = new List<Users>();
//Users obj;
executeCmd("SELECT * FROM Users");
while (Reader.Read())
{
Users obj = new Users(db, 0x10ff);
users.Add(obj);
}
reader.Close();
return users;
}
私が望んでいたのは、単純にテーブルからすべてのレコードを取得し、それらをリストにドロップして、そのリストを返すことでした。ただし、問題はこのコード行にあります。
Users obj = new Users(db, 0x10ff);
パラメータ(レコードOID)として「0x10ff」を入力すると、そのレコードが返されます。これは、試したどのレコードでも機能します。空白のまま (つまり '(db)' ) にすると、Matisse 例外 (InvalidOperation) がスローされ、特定のレコード OID 以外のものを入力すると、ObjectNotFound 例外が返されます。私はここでまったくばかげたことをしているだけですか?私は何が欠けていますか?
ありがとう
編集: db は、以下に示すデータベース接続を指します。DBAcess は、接続とクエリ機能を備えたクラスです。
private MtDatabase db;
public DBAccess()
{
db = new MtDatabase(Properties.Settings.Default.Host, Properties.Settings.Default.Database);
db.Open();
}
コンストラクターについては、Matisse からクラスをインポートしたときにデフォルトのままにしました。
// Generated constructor, do not modify
/// <summary>
/// The factory constructor
/// </summary>
/// <param name="db">a database</param>
/// <param name="mtOid">an existing object ID in the db</param>
public Users(MtDatabase db, int mtOid) :
base(db, mtOid) {
}
// Generated constructor, do not modify
/// <summary>
/// Cascaded constructor, used by subclasses to create a new object in the database
/// </summary>
/// <param name="clsObj">the class descriptor of the class to instantiate</param>
protected Users(MtClass clsObj) :
base(clsObj) {
}
#endregion
// GEN_END: Matisse Generated Code - Do not modify
// Generated constructor
/// <summary>
/// Default constructor provided as an example. NOTE: You may modify or delete this constructor
/// </summary>
/// <param name="db">a database</param>
public Users(MtDatabase db) :
base(GetClass(db)) {
}