2012-12-21 45 views
1

我们正在将基于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。

想法?

+0

仍然有这个问题...任何帮助? –

回答

2

我有一个类似的问题,这是由我的类方法没有正确映射到数据库造成的。我的确切问题是由数据库中的字段引起的,并且类方法被定义为'int'而不是'int?'。

也许你有类似的问题?

+0

这对我来说已经解决了类似的问题,虽然我希望它会对一个安静的日志引发错误 – mosesfetters