1

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

想法?

4

1 回答 1

2

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

也许你有类似的问题?

于 2013-01-23T17:57:32.910 回答