gpt4 book ai didi

c# - ServiceStack.Ormlite.MySql SqlJoinBuilder 无效转换异常

转载 作者:行者123 更新时间:2023-11-29 03:02:04 27 4
gpt4 key购买 nike

我正在使用 ServiceStack.Ormlite.MySql SqlJoinBuilder加入从 MySql 数据库中选择问题是组成的 SQL 查询有效但在 Connection.Select<TEntity>(sql)InvalidCast Exception被抛出。当我使用 JoinSqlBuilderOrmLite.SqlServer没有这样的错误。这是我的方法代码:

const int take = 20;
Expression<Func<smt2_browser_data, object>> browserDataSelectFunc =
browserdata => new { browserdata.os_type, browserdata.agent_name };
Expression<Func<smt2_records, object>> recordselectFunc =
record =>
new
{
record.id,
record.client_id,
record.cache_id,
record.domain_id,
record.os_id,
record.browser_id,
record.browser_ver,
record.user_agent,
record.ftu,
record.ip,
record.scr_height,
record.scr_width,
record.vp_height,
record.vp_width,
record.sess_date,
record.sess_time,
record.fps,
record.page_canvas,
record.location_id,
record.country,
browser_version_id = record.browser_data_id
};
var sql = new JoinSqlBuilder<smt2_browser_data, smt2_records>()
.Join<smt2_browser_data, smt2_records>(browserdata => browserdata.id, record => record.browser_data_id, browserDataSelectFunc, recordselectFunc)
.Join<smt2_records, smt2_cache>(record => record.cache_id, cache => cache.id)
.Join<smt2_records, smt2_browsers>(record => record.browser_id, browser => browser.id)
.Join<smt2_records, smt2_os>(record => record.os_id, os => os.id)
.Join<smt2_records, smt2_domains>(record => record.domain_id, domain => domain.id)
.Where<smt2_domains>(domain => domain.domain == domainName)
.Where<smt2_records>(record => record.sess_date >= dateFrom && record.sess_date <= dateTo)
.OrderByDescending<smt2_records>(record => record.sess_date)
.ToSql()
.Limit(1, take);


var records = this.Connection.Select<RecordInfo>(sql);

和类

public class RecordInfo
{
public decimal id { get; set; }
public string client_id { get; set; }
public decimal cache_id { get; set; }
public int domain_id { get; set; }
public byte os_id { get; set; }
public string os_type { get; set; }
public byte browser_id { get; set; }
public string agent_name { get; set; }
public float browser_ver { get; set; }
public string user_agent { get; set; }
public bool ftu { get; set; }
public string ip { get; set; }
public int? scr_width { get; set; }
public int scr_height { get; set; }
public int vp_width { get; set; }
public int vp_height { get; set; }
public DateTime sess_date { get; set; }
public float sess_time { get; set; }
public byte fps { get; set; }
public string page_canvas { get; set; }
public int? location_id { get; set; }
public string country { get; set; }
public decimal? browser_version_id { get; set; }
}

感谢您的任何建议!

最佳答案

发现问题:DB 类型是 bigint,在 DTO 中已转换为 decimal刚刚将 decimal 更改为 long

关于c# - ServiceStack.Ormlite.MySql SqlJoinBuilder 无效转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21906717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com