- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个函数返回(除其他外)一个 UUID。我正在使用 FluentMap 处理一些包含空格的返回列,但有问题的列 (invoice_id
) 没有这个问题。
数据库查询的简化版本:
CREATE FUNCTION fnSearchInvoices (
_SearchTerm TEXT
)
RETURNS TABLE(
store_id INTEGER,
customer_id TEXT,
"Customer Name" TEXT,
"Store Name" TEXT,
"Email" TEXT,
invoice_id UUID
) AS $$
SELECT
I.store_id,
I.customer_id,
C.name AS "Customer Name",
S.name AS "Store Name",
C.email AS "Email",
I.id AS invoice_id
FROM Invoice I
JOIN Customer C
ON I.customer_id = C.id
JOIN Store S
ON I.store_id = S.id
WHERE
{bunch of conditions for matching search term}
;
$$ LANGUAGE SQL;
请求类:
public class SearchRequest
{
public string SearchTerm { get; set; }
public int PagingOffSet { get; set; }
public int PageSize { get; set; }
public string SortField { get; set; }
public string SortDirection { get; set; }
}
结果类:
public class SearchResult
{
public int StoreID { get; set; }
public string CustomerID { get; set; }
public string CustomerName { get; set; }
public string StoreName { get; set; }
public string Email { get; set; }
public string InvoiceID { get; set; }
public int TotalRecords { get; set; }
}
实体 map :
public class SearchResultMap : EntityMap<SearchResult>
{
public SearchResultMap()
{
Map(p => p.CustomerID).ToColumn("Customer Name");
Map(p => p.StoreName).ToColumn("Store Name");
}
}
最后,从 C# 调用数据库:
IDbConnection dbConnection = new NpgsqlConnection(strDbConnectionString)
string strCommand = "SELECT *, count(*) OVER() AS total_records ";
strCommand += "FROM fnSearchInvoices(:SearchTerm) ";
strCommand += "ORDER BY \"" + cSearchRequest.SortField + "\" " + cSearchRequest.SortDirection + " ";
strCommand += "LIMIT :PageSize OFFSET :PagingOffSet;";
cSearchResponseList = dbConnection.Query<T>(strCommand, cSearchRequest).ToList();
当我使用异常处理运行上面的代码时,出现以下错误(这是一条异常消息加上内部消息):
错误:解析第 6 列时出错(invoice_id=12345678-abcd-1234-abcd-1234567890ef - 对象)详细信息:System.InvalidCastException:对象必须实现 IConvertible。在 System.Convert.ChangeType(对象值,类型转换类型,IFormatProvider 提供程序)在 Deserializeabcdef12-abcd-1234-abcd-abcdef123456(IDataReader)
我可以从 SearchResponse
类中删除 InvoiceID
,查询工作正常;它会忽略该列,其他所有内容都按预期映射。
db 函数正在其他地方使用,我宁愿不更改它,尽管作为最后的手段我可以在函数中强制转换。它只需要在我正在处理的范围之外的其他地方进行额外的更改。我意识到我应该能够更改我的 C# 中的 SELECT
以通过按名称而不是 * 获取所有列来在函数调用之外显式地将 UUID 转换为 TEXT,我将尝试这样做下一个。但是为了将来引用,有没有办法让 Dapper 正确地将查询返回的 UUID 映射到 C# 字符串?
最佳答案
可悲的是,Dapper 将尝试通过数据库特定的类型来关联类型。您的发票列被指定为字符串类型。
如果你有查询返回列:
CAST([Invoice] AS NVARCHAR(MAX)) AS [Invoice]
Dapper 现在可以正确映射到您指定为字符串的对象。那应该可以解决您的问题。最安全的做法是让数据库为您正确地将列转换为 NVARCHAR(MAX)
。
否则您将需要更改您的对象属性。
public Guid Invoice { get; set; }
关于c# - 如何使用 Dapper FluentMap 将 postgresql UUID 解析为 C# 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49579335/
我刚开始使用 FluentMap,我希望将同一列映射到 2 个属性,因为它们需要相同的值。这是我的 map : internal class DefaultsMap : EntityMap {
线 .Mappings(m => m.FluentMappings.AddFromAssemblyOf() 它有什么作用?它会在派生自 ClassMap 的 Product 类的程序集中查找任
有谁知道或有如何使用的链接https://github.com/henkmollema/Dapper-FluentMap在我的 Dapper CRUD 中?现在我正在使用 Dapper.Contrib
我正在为公司应用程序创建一个传输数据工具,用于将数据从旧版本移动到新版本,然后再返回。由于现在我们正在使用 NHibernate 和 FluentMapping,我将不得不映射所有旧表,并且有一个具有
我和一位同事最近正在使用 Fluent NHibernate 为一个小型应用程序做后端。我们编写了我们的实体、映射文件、持久性管理器,但由于某种原因我们无法将数据库模式导出到任何东西。 通过调试器,我
我已经通过ElasticSearch Sense浏览器插件创建了以下索引,并且还创建了C#Nest Fluent映射。我可以在nGrams过滤器上的Nest中表达除“token_chars”以外的所有
我的代码有点问题,我想让 dapper 很好地使用它。 当我说我的代码是继承的,所以这不是我的设计。 我正在尝试替换 Entity Framework,因为对数据库的调用效率不高,所以我想更好地控制生
我在我的项目中使用 NHibernate 3.1 和 Fluent NHibernate 作为 ORM。我需要有一个被 Fluent NHibernate 忽略的 POCO 属性。起初,我的帖子可能看
我有一个函数返回(除其他外)一个 UUID。我正在使用 FluentMap 处理一些包含空格的返回列,但有问题的列 (invoice_id) 没有这个问题。 数据库查询的简化版本: CREATE FU
我是一名优秀的程序员,十分优秀!