問題タブ [oracle-manageddataaccess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# - Oracle ストアド プロシージャは行なしで RefCursor を返します
ストアド プロシージャの呼び出しでは 7 行が返されますが、Oracle Managed Data Access を介して呼び出した場合は返されません。
コード :
ストアド プロシージャ
実行時 : 警告なし、エラーなし (すべてのパラメーターが有効)
私の問題:( 予想される7行ではなく)任意の行が返されますが、スキーマを取得します(列名は正しいです)。
環境 :
- Windows x64
- .NET フレームワーク: 4.0
- Oracle クライアントがインストールされている (v11.2) が必要ではない
- Oracle データ プロバイダー .NET : Oracle.ManagedDataAccess (v121.1.2)
c# - EF 6 プロバイダー構成ファイルで「Oracle.ManagedDataAccess.Client」を追加/アクティブ化する方法は?
これらのビデオ シリーズに従って、VS2013 を使用して ASP.Net MVC Web アプリケーションを作成する方法を学んでいます。次のエラーが発生したとき:
不変名 'Oracle.ManagedDataAccess.Client' を持つ ADO.NET プロバイダーの Entity Framework プロバイダーが見つかりません。アプリケーション構成ファイルの「entityFramework」セクションにプロバイダーが登録されていることを確認してください。詳細については 、http: //go.microsoft.com/fwlink/?LinkId=260882を参照してください。
(ビデオでは、使用されているデータベース プロバイダーはSystem.Data.SqlClient
ASP.Net アプリケーションでは当然ですが、使用する必要がありますOracle.ManagedDataAccess.Client
)
エラー自体は、SOでは新しいものではありません。そして、エラー メッセージと SO の質問の受け入れられた回答で示唆されているように、ODP.Net プロバイダーが EF 6.0 でサポートされているかどうかを確認したところ、 . それにもかかわらず、私はまだそれを機能させることができません。
私は MVC にかなり慣れていないので、この時点で間違って理解している MVC アプリケーション/設定の概念があれば、あなたの理解を求めます。あなたの修正を受け入れます。
役に立つかもしれないいくつかの追加情報:
- VS2013 が提供する ASP.Net Web アプリケーション テンプレートを使用して、プロジェクトを開始します。私はそれにMVCテンプレートを使用し、「フォルダーとコア参照を追加する」MVCのみを使用します。「単体テストを追加する」でも「クラウドでホストする」でもありません
- テンプレートには
app.config
ファイルはありませんが、ファイルはありWeb.config
ます (これは何か違いがありますか? エラー メッセージで、「プロバイダーがアプリケーション構成ファイルの 'entityFramework' セクションに登録されていることを確認してください」と提案されています)。 - Web.config ファイルで、次の
entityFramework
部分を見つけました。
あることに気付く
そこにライン。したがって、同様に追加しようとします:
type
しかし、属性に何を書けばいいのかわからずEntityFramework.???
、数時間立ち往生しています。入れないと、次の警告が表示されます。必要な属性「タイプ」がありません
これについての助けをいただければ幸いです。
この問題を解決するためにプロバイダーを追加する以外に、他に何かする必要があることがわかっている場合も、私はオープンです。ファイル内の接続文字列は次のweb.config
とおりです。
c# - ODP.Net Oracle.ManagedDataAccessを使用したEF 6、クラスプロパティに大文字以外を使用する方法は?
Oracle.ManagedDataAccess
ASP.Net MVC Web アプリケーションのODP.Net で EF 6 を使用しています。
私は(ファイル内で)以下Model
を呼び出しています:Employee
Model\Employee.cs
としてもEmployeeContext.cs
次に、私のでは、次のようEmployeeController.cs
に を使用します。Employee
EmployeeContext
次の内部例外エラーが発生した場合:
Oracle.ManagedDataAccess.Client.OracleException: ORA-00904: "Extent1"."Id": 無効な識別子
例外エラーは次の場所で発生します。
デバッグ出力コンソールを使用してさらにデバッグを行っていると、EF が次の SQL クエリを生成してデータを取得していることに気付きました。
" "
さらに調査を行ったところ、SQL クエリの列名 ( 、 など."Id"
)に引用符が含まれているため".EmployeeType"
、".HourlyPay"
クエリが一致する列名を見つけられないことがわかりました。Oracle データ テーブルの列名はすべて大文字で表されます (つまり."ID"
、".EMPLOYEETYPE"
、".HOURLYPAY"
など)。
さて、クラス定義を次のように変更すると:
それは完全にうまく機能します。しかし、私はそれを望んでいません。
典型的な C# コーダーとして、クラスのフィールド/プロパティがすべて大文字であることは非常に珍しいことでした。
私の質問は、大文字と小文字の組み合わせを使用してクラス プロパティを保持する方法はありますか?
繰り返しますが、EF6.0.0.0
と ODP.Net のOracle.ManagedDataAccess
バージョン4.121.2.0
と、それらが重要な場合はOracle.ManagedDataAccess.EntityFramework
バージョンを使用します。6.121.2.0
c# - ODP.net接続を適切に閉じる方法:dispose()またはclose()?
これは私のpowershellコードです:
それで、ODP.NET接続を開いてから閉じていますが、Oracle Databaseへの接続を適切に閉じるには十分ですか$OracleConnexion.open()
? $OracleConnexion.close()
または、使用する必要があります$OracleConnexion.Dispose()
か?
タスク スケジューラを介して 5 分ごとに PowerShell を実行しています...メモリの飽和を避けるために Dispose() を使用する必要がありますか?
c# - BOOLEAN を Oracle 12c プロシージャに渡す方法は?
BOOLEAN
12cでOracleプロシージャに渡す方法は?
12cより前はできなかったと聞きましたが、12cでもできません。
私は以下を試しましたが、エラーが発生しました。
エラー:
entity-framework - Oracle Managed Data Access用のWeb構成の構成
大規模なグーグルの後、この問題の解決策が見つからないようです。一言で言えば、MVC/Web API アプリケーションで EF 6 で Oracle Managed Data Access クライアントを使用しています。
ローカルで実行すると、Web API 2 コントローラーでさまざまな操作を正常に呼び出すことができます。問題はありません。
ステージング サーバーに公開すると、すぐに次のエラーが発生します。
"メッセージ: 基礎となるプロバイダーが Open で失敗しました。
明らかに、ローカルで実行する場合、ユーザー名/パスワードは問題ないので、web.config の場所にそれらを配置していないと感じています。
これが私の Web 構成です。接続文字列の Datasource 値に TNS 文字列全体を使用していることがわかります。そうしないと、ステージング サイトに次のエラーが表示されます - TNS: 指定された接続識別子を解決できませんでした
.net-4.5 - .NET 4.5.1 で Oracle Managed DataAccess を使用すると、印刷できない文字が Oracle から返される
VB.NET Web アプリケーションを .NET Framework 2.0 から 4.5.1 に移行したばかりで、この移行の一環として、OLE DB ドライバーも Oracle Managed Data Access Driver に更新しました。
既存のコードのクエリのいくつかは、低い値 (非印刷可能文字、具体的には chr(0)) の空の文字列をフェッチしていたことが判明しましたが、新しい移行されたコードはたまたま非印刷可能文字をそのまま返します ("�" として返されます)。 . これがフレームワークまたはOracle Managed Data Access Driverの移行によるものかどうかは誰にもわかりません。これらの「印刷できない文字」を返さないようにするために実行できるグローバル設定/構成はありますか。コードを調べて、複数の場所で文字列をマスキングしないようにするには?
oracle - アップデートの Oracle.ManagedDataAccess 4.121.1.0: ORA-01461: CAN BIND A LONG VALUE ONLY FOR INSERT INTO A LONG COLUMN
テーブルの更新を行うと、次のエラーが発生します。
このエラーが発生する列は a として定義されておりCLOB
、約 4 万文字の文字列を挿入しようとしています。しましたが、次のエラーが表示されますParameterDirection
InputOutput
Input
どうすればこの問題を解決できますか? System.Data.OracleClient
また、うまく動作するため、dllの問題だと思います。Oracle.ManagedDataAccess
しかし、もう一方は廃止されているため、使用したいと思います。
ありがとう