【问题标题】:Unable to get Long type of data using Dapper无法使用 Dapper 获取 Long 类型的数据
【发布时间】:2014-04-09 13:17:50
【问题描述】:

问题: 我无法在 Oracle DB 源中检索 Long 类型的列并将其设置为 .Net 中的类中的字符串属性

详情: 在尝试使用 dapper 触发 SQL 查询并返回结果时,我遇到了一个相当奇怪的情况。我不能分享实际的课程细节,但这里有一个示例。我有一堂课:

public class MyClass
{
    public string VeryLongMessage { get; set; }
}

我触发了一个简洁的查询,如下所示:

using (var con = ConnectionUtility.GetConnection("MyConnectionString"))
{
    var result = con.QueryAsync<MyClass>("SELECT VeryLongMessage FROM MyView");
}

但是当我检查结果中的值时,我在结果的 VeryLongMessage 属性中得到一个空值。

有没有其他人见过这样的问题?有什么想法或建议吗?

我已验证的事项: 我的 Dapper 查询的列名和属性都匹配。属性类型是字符串,Oracle db 视图中的列是 Long。

如果您需要更多详细信息,请告诉我。

【问题讨论】:

  • 是 LONG 还是 LONG RAW?
  • 可能是您将二进制数据分配给字符串?你让 VerLongMessage 成为一个字节数组有帮助吗?
  • @Nishmaster,我相信这个专栏很长。
  • 如果您创建了一个包含 LONG 列的表,请将列类型更改为 LOB。 LONG 已被弃用多年,事实上 Oracle 的 documentation on the LONG datatype 明确表示,“不要创建具有 LONG 列的表”。分享和享受。
  • This might be of help。单击显示"Obtaining LONG and LONG RAW Data" 的链接。分享和享受。

标签: c# sql .net oracle dapper


【解决方案1】:

dapper issue 173

不幸的是,似乎有四种间接方式:

  • 修复数据库(在你的情况下你不能)

  • 添加额外的存储函数以获取 LONG 作为 CLOB。阅读Long to Varchar2 conversion.. 并在AskTom 上查找类似主题

  • 修复小巧玲珑 :)

  • 改用 ADO.NET

【讨论】:

  • 嘿内尔。感谢您的回复。看起来我必须删除你建议的所有选项:(我想使用 Dapper/Dapper 中的任何设置来实现这一点。
猜你喜欢
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 2017-08-08
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
相关资源
最近更新 更多