1

私は Sybase 12 と dapper.net を使用しています。Sybase の更新プログラム 3817 を作成するまでは、すべて問題ありませんでした。この更新プログラムの後、「 System.NullReferenceException:」という例外が発生し始めました。

痕跡:

   iAnywhere.Data.SQLAnywhere.SAConnection.CalledByEntityFramework() +263
   iAnywhere.Data.SQLAnywhere.SAConnection.get_ConnectionString() +538
   Dapper.Identity..ctor(String sql, Nullable`1 commandType, IDbConnection connection, Type type, Type parametersType, Type[] otherTypes) +73
   Dapper.<QueryInternal>d__13`1.MoveNext() +545
   System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +381
   System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
   Dapper.SqlMapper.Query(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) +218
   Dapper.SqlMapper.Query(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) +88

私が可変的に見た接続を調べたとき、その接続文字列には例外があります:

「MDbConnection.ConnectionString」が「System.NullReferenceException」タイプの例外をスローしました。

この sybase の更新で何が起こるのか理解できません。バージョン 12 および最新の 16 のすべての次の更新では、dapper で同じ問題が発生します。しかし、ADO.Net を使用すると、すべて正常に動作します。

4

2 に答える 2

0

それは興味深い; 次のことに関連しているようです。

internal Identity(string sql, CommandType? commandType, IDbConnection connection, Type type, Type parametersType, Type[] otherTypes)
    : this(sql, commandType, connection.ConnectionString, type, parametersType, otherTypes, 0)
{ }

したがって、.ConnectionString失敗しているのはクエリを実行するという単純な行為です。あなたは言う:

しかし、ADO.Netを使用すると、すべてが正常に機能します。

これは、 ADO.NET.ConnectionStringを使用しているときに、接続が開いた後を確認する理由がなかったためだと思います。おそらく最初に行うこと(これを確認できますか?)は、エラー.ConnectionString スローされるかどうかを確認することです。

using(var conn = new WhateverConnection(connectionString)) {
    conn.Open();
    // maybe execute a command, just for fun
    Console.WriteLine(conn.ConnectionString);
}

もちろん、コード内に何か他のものがあり、それがEntity Frameworkに関連していると誤って考えさせている場合は、次のようになります。

iAnywhere.Data.SQLAnywhere.SAConnection.CalledByEntityFramework() +263

でも!最終的に、ここでの「問題」は次のように見えますSAConnection。実装のバグ。率直に言って、これはsybaseでログに記録する必要があるものだと思います。

于 2013-03-08T07:31:45.753 に答える