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 だったことを除いて、すべてが正しく返されました。
考え?