我们正在将基于 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,因为我将它传递给方法。
我确实调用了最后一个 SQL,并直接针对数据库运行了它,并且所有字段都被正确引用。
我在调试器中单步执行了代码,一切都正确返回,除了返回的唯一字段是 ID。
想法?