1

SProc ベースのソリューションを ORMLite に移行していますが、これまでのところ問題はありません。今日、私は次のメソッドを書きました:

    public AppUser GetAppUserByUserID(int app_user_id)
    {
        var dbFactory = new OrmLiteConnectionFactory(this.ConnectionString, SqlServerOrmLiteDialectProvider.Instance);
        AppUser item = null;

        var rh = new RedisHelper();
        var id=  CacheIDHelper.GetAppUserID( app_user_id );
        item = rh.Get<AppUser>(id);

        if (item == null)
        {
            try
            {
                using (var db = dbFactory.OpenDbConnection())
                {
                    item = db.Single<AppUser>("application_user_id={0}", app_user_id);

                    rh.Set<AppUser>(item, id);
                }
            }
            catch (Exception ex)
            {
                APLog.error(ex, "Error retrieving user!");
            }
        }
        return item;
    }

余分なフィールドのいくつかを削除しましたが、基本的には次のとおりです。

[Alias("application_user")]
public class AppUser : APBaseObject
{

    [Alias("application_user_id")]
    [AutoIncrement]
    public int? UserID
    {
        get;
        set;
    }

    [Alias("application_user_guid")]
    public string UserGUID
    {
        get;
        set;
    }

 //MORE FIELDS here.

}

課題は、入力される唯一のフィールドが ID フィールドであり、その ID をメソッドに渡しているため、既にその ID を知っていることです。

最後に呼び出された SQL を取得し、それを DB に対して直接実行したところ、すべてのフィールドが正しく参照されていました。

デバッガーでコードをステップ実行したところ、返された唯一のフィールドが ID だったことを除いて、すべてが正しく返されました。

考え?

4

1 に答える 1

2

クラスメソッドがデータベースに適切にマッピングされていないことが原因で、同様の問題が発生しました。nullable int私の正確な問題は、データベース内のフィールドが原因であり、クラス メソッドは「 int」ではなく「 」として定義されていましたint?

おそらく、あなたは同様の問題を抱えていますか?

于 2013-01-23T17:57:32.910 に答える