我们正在将基于SProc的解决方案迁移到ORMLite,并且迄今为止一直非常轻松。今天,我写了下面的方法:ServiceStack 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。
想法?
仍然有这个问题...任何帮助? –