我在这里得到了ODTwithODAC121021 它安装了Oracle Client,ODAC和ODT位.
当我运行安装程序时,先决条件检查失败,并显示:
操作系统分发"Windows XP5.1"上的"12.1"版本不提供参考数据.
我实际上有Windows 7 Professional SP1
咦?
我的目的是将ODT位添加到Visual Studio 2010中,以便我可以使用Server Explorer和Entity Framework.我真的不需要一个新的Oracle客户端,我已经安装了一个以匹配我们的11g服务器版本,但似乎我无法选择这个安装程序,它将无法运行.
建议?谢谢.
如果列类型为 NUMBER(x,y),则 ODP.NET 提供程序会在 IDataReader.GetValue()/GetValues() 中引发异常,这样它将溢出所有 .NET 数字类型。因此 Dapper 无法将这样的列映射到 POCO 属性。
我有一个 Oracle 存储过程,它使用 REF CURSOR 输出参数返回 3 列记录。基本上所有 3 都是 NUMBER(something),但ODP.NET Oracle 托管提供程序似乎决定将它们变成 ODP.NET 或 .NET 类型。
我在 Dapper 的 Query() 将记录从这个 sproc 映射到 POCO 时遇到了问题。也许这实际上不是我的错,这一次 - 似乎当一列作为 ODP.NET 类型而不是 .NET 类型出现时,Dapper 失败了。如果我从我的 POCO 中评论一个有问题的专栏,一切正常。
这是一对行来说明:
--------------------------------------------------------------------
RDWY_LINK_ID RLC_LINK_OSET SIGN
---------------------- ---------------------- ----------------------
1829 1.51639964279667746989761971196153763602 1
14380 578.483600357203322530102380288038462364 -1
Run Code Online (Sandbox Code Playgroud)
第一列在 .NET 中被视为int,第二列作为OracleDecimal类型,第三列作为十进制。第二个是问题。
例如,暂时删除 Dapper 并使用 vanilla ODP.NET 访问这些记录,从而表明存在问题:
int linkid …Run Code Online (Sandbox Code Playgroud) 我在PropertyGrid中显示对象的属性.其中一个属性是枚举.因此,它使用组合框编辑器显示,该编辑器列出了枚举的所有值.这一切都很棒,但我需要在运行时过滤枚举值列表.我不能用Browsable属性装饰一些枚举值,因为我想要隐藏的值会有所不同.目前我倾向于定制的UITypeEditor,但我认为我应该首先与智能人员核实.
请善待LINQ假...说我有8行数据,如下所示:
+-------------------+
| ID WORKTYPEDESC|
+-------------------+
| 1 plumber |
| 1 carpenter |
| 1 electrician |
| 2 juggler |
| 2 mime |
| 3 writer |
| 3 actor |
+-------------------+
Run Code Online (Sandbox Code Playgroud)
作为一个8项目的IList<Worktype>集合,Worktype看起来像
public class Worktype
{
public int Id { get; set; }
public string WorktypeDesc { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要的是通过Id聚合得到一个包含3个Worktypes的列表,每个WorktypeDesc都是一个排序的,以分号分隔的列表,如下所示:
+-------------------------------------+
| ID WORKTYPEDESC |
+-------------------------------------+
| 1 carpenter;electrician;plumber |
| 2 juggler;mime |
| 3 actor;writer |
+-------------------------------------+
Run Code Online (Sandbox Code Playgroud)
??