問題タブ [dotconnect]
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# - コードで接続文字列を設定する
エンティティフレームワークとサードパーティプロバイダーを利用してOracleデータベースと対話する.NETMVCアプリケーションがあります。アプリケーションを使用しているユーザーに基づいて、2つの接続文字列から選択できる必要があります。サードパーティプロバイダーは、エンティティデータモデルが存在するプロジェクトのapp.configで、エンティティコンテナ名に名前が対応する接続文字列を見つけると想定しています。
質問:接続文字列が存在するように設定するにはどうすればよいですか?データベースを呼び出す前に、ここで概説したEntityConnectionStringBuilderを使用すると、 app.configで接続文字列を設定するのと同じになりますか?IEは、Entity Frameworkのものが探しているものを見つけますか?
c# - dotConnect for SQLiteはMonoをサポートしていますか?
DevartのSQLite用のdotConnectプロバイダーはMonoをサポートしていますか?グーグルはそう言っているようですが、彼ら自身の互換性ページはそうではないと言っています。
SQLiteを使用してMonoでCodeFirstを使用したいと考えています。
oracle - Dotconnect for Oracle - EF - グローバル トランザクションのローカル セッションが多すぎる
1 回のトランザクションで、1 つのデータベースに 2 つのレコードを挿入し、別のデータベースに約 40 のレコードを挿入する必要があります。私は TransactionScope を使用していて、このエラーが発生しています。
私はこの記事を読みましたが、2 つのデータベースが関係しており、分散トランザクションであるため、役に立ちません。
http://www.devart.com/blogs/dotconnect/index.php/entity-framework-tips-and-tricks-part-3.html
私のコードは以下のようなものです。
ループの外側に「コンテキスト」を作成していますが (上記のリンクの例とは異なり)、コードは「ローカル セッションが多すぎます」というエラーで失敗します。
また、すべてのクエリ「context.Orders.Where(...)」が新しいトランザクションとして登録されていることに気付きました。Linq to Sql ではなく、Entity Framework を使用しています。したがって、上記のコードは 20 回の繰り返しで壊れます。
それらを2つの独立したローカルトランザクションにし、手動でトランザクション処理を行う以外に、私のオプションは何ですか。
oracle - dotConnect for Oracle ヘブライ語の問題 - 意味不明 - 取得 ¿
ヘブライ文字を含む Oracle データベースで Devart dotConnect を使用して EF を作成しようとしています。
正規編集で:
web.config:
マスターで:
実際の値の代わりに「¿¿¿¿」が表示されます。あなたはそれを修正することができますか?
c# - devartdotConnectを使用してOracleストアドプロシージャを呼び出します
私はEntityFrameworkを初めて使用し、Oracleストアドプロシージャを呼び出そうとしましたが、成功しませんでした。だからここに私の質問があります:
devart dotConnectを使用してOracleストアドプロシージャを呼び出す方法は?
たとえば、ストアドプロシージャがあります。
そして、C#から私は電話をかけています:
ただし、「EntityCommandExecutionException」がスローされます。
コマンド定義の実行中にエラーが発生しました。詳細については、内部例外を参照してください。
これが内部例外です:
ORA-06550:行2、列3:\ nPLS-00306:'GET_PROBLEMS'の呼び出しで引数の数またはタイプが正しくありません\nORA-06550:行2、列3:\ nPL / SQL:ステートメントが無視されました
使用しました
"typeof(byte [])"
これは、DevartEntityDeveloperの生成されたコードで見たためです。
psちなみに、大規模なプロジェクトでdotConnectをどのように推奨しますか?
oracle - CLOBとVARCHAR2、および他の選択肢はありますか?
アプリケーションにDevArtのdotConnectとEntityDeveloperを使用しています。エンティティファースト機能を使用してテーブルを作成しました。
多くの列タイプがCLOBに設定されていることに気付きました。私はMySQLとMicrosoftSQLServerの経験しか持っていないので、アプリケーションにCLOBを使用するかどうかはわかりません。少し読んだところ、CLOBは大量のデータ用であることがわかりました。
質問は次のとおりです。
ユーザーの性別(varchar(1)である必要があります)やフルネームなど、ほとんどのフィールドにCLOBを使用できますか?CLOBフィールドをVARCHAR2に変換する手順では、列を削除してから再作成する必要があり、DevArtのエンティティエクスプローラーではバグがあるため、可能であれば避けたいと思います。編集:文字列フィールドの最大長を設定すると、自動的にVARCHAR2になることがわかりました。
OracleにTINYTEXTに相当するものはありますか?
oracle - Linq クエリの変換にヘルプが必要 (Silverlight RIA エンティティ - Oracle DB)
SQL には問題はありませんが、Linq は少しわかりにくいと思います。C#、.NET4、Silverlight、RIA サービス、Oracle DB (v?)、Devart dotConnect 6.10.121 を実行する VS2010。
RIAエンティティを持っています
この投稿には適用されないユーザーなどのフィールドが他にもあります。プロセスを構成する多くのジョブがあります。各ジョブにはこのテーブルのエントリがありますが、必要なビューは要約による日付グループです。
クエリで context.Load を呼び出し、開始日と終了日を渡します。Oracle では次のようになります。
conttext.Load は、IQueryable を返すメソッドから linq クエリを呼び出します。linq ステートメントは、Devart dotConnect for Oracle の下で Oracle に対して実行する必要があります。ProcessLogHdrDateSummary のように、結果を保持するためのカスタム クラスが必要だと思います。
不足している部分を埋めるのを手伝っていただければ????? linq、私はとても感謝しています:
どうもありがとう!
sql - 大規模な SQL トランザクション: PostgreSQL でメモリ不足になるが、SQL Server では動作する
C# デーモン アプリケーション (dotConnect を ADO.NET プロバイダーとして使用) を SQL Server 2008 R2 から PostgreSQL 9.0.4 x64 (Windows Server 2008 R2 上) に移動することにしました。したがって、PostgreSQL 構文に一致するようにすべてのクエリをわずかに変更しましたが、SQL Server の同じクエリでは発生しなかった動作に行き詰まりました (低レベルの Express エディションでも)。
データベースに、相互に関係のない 2 つの非常に単純なテーブルが含まれているとします。ID、Name、Model、ScanDate、Notes のようになります。TCP/IP 経由でデータを読み取り、処理し、トランザクションを開始し、通常の INSERT を使用して結果を前述の 2 つのテーブルに入れる変換プロセスがあります。テーブルは最初は空です。BLOB 列はありません。悪い日には約 500.000 回の INSERT があり、すべてが 1 つのトランザクションにまとめられています (複数のトランザクションに分割することはできません)。SELECT、UPDATE、または DELETE は行われません。INSERT の例 (ID は bigserial - 自動的に自動インクリメントされます):
SQL Server は、約 200 MB の妥当なワーキング セットを維持しながら、負荷を冷静に受け入れます。ただし、PostgreSQL は、トランザクションが実行されるたびに (!) 追加で 30 MB を消費し、システム RAM をすぐに使い果たします。
RTFM を実行し、postgresql.conf をいじってみました: 「work_mem」を最小 64 kB に設定し (これにより、RAM の占有がわずかに遅くなりました)、「shared_buffers」/「temp_buffers」を最小に減らしました (違いはありません)。無駄に。トランザクション分離レベルを Read Uncommitted に下げても効果がありませんでした。ID BIGSERIAL (PK) のインデックス以外にインデックスはありません。SqlCommand.Prepare() は違いはありません。同時接続は確立されません。デーモンはデータベースを排他的に使用します。
PostgreSQL は気が遠くなるほど単純な INSERT フェストに対応できないように見えるかもしれませんが、SQL Server はそれを行うことができます。多分それは PostgreSQL スナップショットと SQL Server のロックの分離の違いでしょうか? これは私にとって事実です。標準の SQL Server は動作しますが、標準の PostgreSQL も微調整した PostgreSQL も動作しません。
INSERT ベースのトランザクションが実行されている間、PostgreSQL のメモリ消費量を (SQL Server の場合と同様に) 一定に保つにはどうすればよいですか?
編集:人工的なテストケースを作成しました:
DDL :
C# (Devart.Data.dll と Devart.Data.PostgreSql.dll が必要)
これにより、メモリの浪費が再現されます。ただし、「cmd」変数が作成され、FOR ループの外で .Prepare()d が実行された場合、メモリは増加しません。どうやら、IDENTICAL SQL を使用して複数の PgSqlCommands を準備しても、パラメーター値が異なると、SQL Server のように PostgreSQL 内で単一のクエリ プランにはなりません。
問題は残ります: Fowler の Active Record dp を使用して複数の新しいオブジェクトを挿入する場合、準備された PgSqlCommand インスタンスの共有はエレガントではありません。
同一の構造で異なる引数値を持つ複数のクエリでクエリプランの再利用を容易にする方法/オプションはありますか?
アップデート
ADO.NET を使用せずに、SQL バッチが DBMS で直接実行される (Jorani が提案) という、可能な限り単純なケースを検討することにしました。驚いたことに、PostgreSQL は受信した SQL クエリを比較せず、内部でコンパイルされたプランを再利用しません。受信したクエリが同じ引数を持っている場合でも! たとえば、次のバッチ:
PostgreSQL (pgAdmin -> クエリの実行経由) -- メモリを大量に消費する
SQL Server (Management Studio -> Execute 経由) -- メモリ使用量を一定に保ちます
PostgreSQL ログ ファイル (ありがとう、Sayap!) には次のものが含まれます。
どうやら、クエリ全体をそのままサーバーに送信した後でも、サーバーはそれを最適化できません。
ADO.NET ドライバーの代替
Jordani が示唆したように、dotConnect の代わりに NpgSql ドライバーを試してみましたが、結果は同じ (不足) でした。ただし、 .Prepare() メソッドの Npgsql ソースには、次のようなわかりやすい行が含まれています。
ログ ファイルの新しい内容:
このログの抜粋では、非効率性が非常に明白です...
結論(そのようなもの)
Frank の WAL に関するメモは、もう 1 つの目覚めです。典型的な MS 開発者が SQL Server を隠していることを構成する別の何かです。
NHibernate は (最も単純な使用法であっても) 準備された SqlCommands を適切に再利用します...それが最初から使用されていれば...
SQL Server と PostgreSQL の間にアーキテクチャ上の違いが存在することは明らかであり、 SQL Server用に特別に構築されたコード(したがって、「同一の SQL を再利用できない」可能性を幸いなことに認識していない) は、PostgreSQL では大きな問題がなければ効率的に機能しません。リファクタリング。また、130 以上のレガシー ActiveRecord クラスをリファクタリングして、準備された SqlCommand オブジェクトを乱雑なマルチスレッド ミドルウェアで再利用することは、「dbo を public に置き換えるだけ」タイプの作業ではありません。
残念ながら私の残業には、Eevar の答えは正しいです :)
参加してくれたみんな、ありがとう!
c# - EntityFrameworkコードを最初に使用してdevartdotconnectを使用してレガシーOracleデータベースに接続する
エラー:Typeclobは名前空間またはエイリアスで修飾されていません。修飾なしで使用できるのはPrimitiveTypesのみです。
devart dotconnectを使用して、レガシーOracle10gデータベースに対してMVC3でEF4.1(コードファースト)を使用しようとしています。レガシーデータベースは変更できません。その中のデータをウェブページに読み出そうとしています。
(Devart.Data.Oracleバージョン:5.70.140.0)
途中で克服すべきいくつかのエラーがありましたが、これに到達しました:
エラー0040:タイプclobは名前空間またはエイリアスで修飾されていません。修飾なしで使用できるのはPrimitiveTypesのみです。
これは私のコードです:
Web.config接続情報:
編集:追加情報、これは私が読み込もうとしている(多くの)最初のテーブルです。
そしてMVCコントローラーはこれをスローします
Local ='(model).Local'はタイプ'System.Data.MetadataException'の例外をスローしました
nhibernate - コンパクトなフレームワーク 3.5 での dotConnect モバイルおよび流暢な nhibernate
Oracle DBへの接続にはdotConnectモバイルを使用しています。
デスクトップの NHibernate と Fluent Nhibernate ORM で dotConnect を使用できることはわかっていますが、この組み合わせは Compact Framework (バージョン 3.5) でも使用できますか?