0

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)) {
}
4

1 に答える 1