2012-12-21 153 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