新しいasp.netの新しいコアサイトのMySQLデータベースライブラリを作成しようとしています。 DatatableとDataSetを使用して、MVC5日に同様のパターンを使用しました。これらの恐ろしいデータ構造はCoreから削除されました。そして私は、複数の結果セットを持つクエリを実行する最良の方法が何であるか疑問に思っていました。例えばMySQLを使用したマルチクエリの実行.Net Core ADO
、
public static IEnumerable<IEnumerable<IDataRecord>> ExecuteMultiQuery(MySqlConnection connection, CommandType commandType, string commandText, params MySqlParameter[] commandParameters) {
var returnObject = new List<List<IDataRecord>>();
using (MySqlCommand command = PrepareCommand(connection, commandType, commandText, commandParameters)) {
try {
connection.Open();
command.Prepare();
MySqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
do {
List<IDataRecord> resultSet = new List<IDataRecord>();
while (reader.Read()) {
resultSet.Add(reader);
}
returnObject.Add(resultSet);
} while (reader.NextResult());
}
finally {
connection.Close();
}
command.Parameters.Clear();
}
return returnObject;
}
はしかし、コードをステップ実行しながら、私は、コレクションが実際にどのようなデータを保持しないことに気づきます。私は私のストアドプロシージャをテストし、これは正しく必要な行を返します。また、私はPOCOバインディングを担当するDapperに似たオーダーメードのマイクロORMを持っています。私はそれに満足しており、外部のナゲットパッケージに頼ることは望まない。
私はただのガイダンスが最もいただければ幸いです...
の方法は、コレクションを満たしていない理由を理解することはできません。
P.S PrepareCommand
メソッド呼び出しはプライベートであり、正しく挿入されたMySqlCommandにparamsを単に返すだけです。
P.P.Sこれは面倒なバインディングタイムを伴うひどいフレームワークなので、EFは私に言及しないでください。私は類似のExecuteReaderメソッドを約75-90msでバインドすることができます(Dapperは高速ではありませんが速くはない)ので、私は他のシナリオで作成したDBUtiltiyを知っています。
おかげで、すべての