我们正在将基于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,并直接在DB上运行它,所有字段都被正确引用。
我单步执行了调试器中的代码,除了唯一返回的字段是ID之外,一切都正确返回。
有什么想法?
发布于 2013-01-24 01:57:33
我遇到了一个类似的问题,这是由于我的类方法没有正确地映射到数据库造成的。我的问题是由db中的nullable int字段引起的,类方法被定义为'int‘而不是'int?’。
也许你也有类似的问题?
https://stackoverflow.com/questions/13997068
复制相似问题