問題タブ [data-layer]
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# - エンティティ オブジェクトは、EF データ アクセス層の IEntityChangeTracker の複数のインスタンスによって参照できません。
同じトピックに関する多くの質問を見てきましたが、まだ解決策が見つかりません. 問題を引き起こしているコードは次のとおりです。
リポジトリを取得する方法は、OrderController コンストラクターでの依存性注入によるもので、標準的な方法だと思います。私のレポはそれぞれ、次のように構築されています。
一般的なエンティティ リポジトリのメソッドをオーバーライドする場所:
最後に、これは私の UnitOfWork アイテムです:
私が使用しているコンテキスト
私が示しているのは大量のコードであることはわかっていますが、これらがすべてデータ アクセス レイヤーのビルディング ブロックであることを願っています。何らかの理由で、SampleOrders で InsertGraph メソッドを呼び出すと、「IEntityChangeTracker の複数のインスタンスでエンティティ オブジェクトを参照できません」という例外が発生します。このコードを何十回も調べましたが、なぜこのエラー メッセージがスローされるのかわかりません
c# - dbcontext 接続文字列を DALayer に渡しました
アプリケーションに 4 つのレイヤーがありますUI
, DomainClass
, .Model(DBCntext)
Repository
リポジトリには、次のような抽象クラスがあります。
このクラスからのすべてのエンティティの継承は次のようになります。
私はこれをUI
リポジトリと呼びました。あなたがここに見ることができるように:
UI レイヤーには、app.config
ここでわかるように接続文字列があります。
しかし、このオプションを使用して自分で設定できるオプションをユーザーに提供したいのでconnection string
、UIレイヤーにフォームを作成し、ユーザーlog in
が接続文字列を尋ねたときにフォームを作成しました.私の問題はHow can pass this connection string to my dbcontext
?
私model layer(dbcontext)
はこれを持っています:
asp.net-mvc - IOC (依存性注入) を使用した C# のデータ アクセス レイヤー
C# で多層アプリケーション (サービス) を構築しようとしています。正確には、ASP.NET Web Api を使用して REST Web サービスを構築しようとしています。これは、自分で (Owin を使用して) ホストされます。今、私は次のコンポーネントを持っています(それらのすべてが個別の.dllにあります):
-
RestHost
(私の場合はコンソールアプリケーションです)InterfacesLayer
- ModelLayer (私が使用するオブジェクトは、get/set メソッドのみです)
- DataLayer (ModelLayer 内のすべてのクラスには、Datalayer に独自のクラスがあり、さらに Database 接続クラスがあります)
- BusinessLayer (ここですべてのロジックが完了します。ここでも、モデルのすべてのクラスに独自のクラスがあり、このレイヤーは REST サービスおよびデータレイヤーと通信します)。
RestHost - 名前が示すように、これは私のサービスのホストです。それに加えて、ここで依存関係の注入も行っています。それは多くのコードではないので、投稿します:
ああ、言い忘れたことですが、コードからわかるように、ホスト アプリケーションでは、接続文字列がホストされている App.Config も読み取っています。
そして、ここに私の問題があります。サービスからデータベース接続にアクセスする方法がわかりません。ここでは、データ アクセス レイヤーに Firebird を実装していますが、アプリケーションで Firebird を使用する方法がわかりません。もちろん、最も簡単な方法は、インスタンスを作成してサービスに渡すことですが、これは私がやりたい最後のことです。Firebird を静的クラスまたはシングルトンとして実装することも考えていましたが、IPersistant インターフェイスを使用できません (さらに、これが正しいアプローチだとは思いません)。
だから私の質問は、この種のもののベストプラクティスはありますか? どういうわけか接続文字列を IPersistent (Firebird) の実装に渡す必要がありますが、RESTService で Firebird のインスタンスを実際に作成する必要はありません。
ありがとう
android - Android Wear エラー ConnectionResult{statusCode=SERVICE_VERSION_UPDATE_REQUIRED, resolution=null}
簡単なウェアラブル アプリを作成し、データ レイヤーを介して接続したいと考えていました。ハンドヘルド モジュール (S5 を使用) ではすべて正常に動作しますが、ウェアラブル (Moto 360 を使用) では常にエラーがスローされます。
onConnectionFailed: ConnectionResult{statusCode=SERVICE_VERSION_UPDATE_REQUIRED, resolution=null}
ハンドヘルドのプレイ サービスは最新です
私は追加しました
ハンドヘルド、ウェア build.gradle の両方に。
ウェアラブル アクティビティ:
調査を行いましたが、有効な解決策が見つかりませんでした。
google-tag-manager - Google タグ マネージャーで、起動したタグでデータレイヤー変数の値が未定義として表示される
タグ内に dataLayer 変数値を追加しようとしていますが、Chrome のコンソールの [ネットワーク] タブ内で起動されたタグを見ると、コンソール内の dataLayer オブジェクトに適切な値。
GTM の dataLayer 変数は次のとおりです。
これは、タグ内の値にアクセスする方法です。
ORDERID={{ORDERID}}
これは、コンソールで dataLayer 値として表示されるものです。
しかし、ネットワーク タブ内では、dataLayer 変数が未定義であることがわかります。
プレビュー モードでのタグ マネージャーの DataLayer は次のようになります。
sql-server - あまりにも多くのビジネス ロジックを含む (T)Sql ビュー
私はTSQLビューを持っています。いくつかの列を除いて、いくつかの結合を行い、すべてを接着して本来あるべき見栄えを提供するという点で、かなり基本的なものです。ただし、複雑な列のビジネス ロジックを無効にする新しい要件が発生したため、それほど単純ではない列がいくつかあるため、ビュー コードの拡張が非常に難しくなっています。
詳しくは説明しませんが、私のデータベースには次のテーブルがあります。
これは、「雇用」の行で構成されます。行の列のいずれかが特定の雇用の変更 (変更としましょう) に対して変更されるたびemploymentTitle
に、現在の行が別の table にプッシュされtblEmploymentHistory
、行tblEmployment
が変更されて最新の が含まれるようになりますemploymentTitle
。
基本的に、ビューが行うことは、tblEmployment
ontblEmploymentHistory
を uniqueに結合しようとEmploymentIdentifier
することです。これは理にかなっています。
elapsedTime
ビュー内のより複雑な列は、結合された行から (つまり から) さまざまな計算を行うことにより、(行ごとに)数値を計算しようとしますtblEmployment and tblEmploymentHistory
。経過時間を取得するために、指示されたビジネス ロジックに基づいて計算を実行します。たとえば、履歴テーブルの特定の日時列のみが合計経過時間にカウントされ、その行の他の列が特定の値に設定されている場合にのみカウントされます。
新しい要件が発生したため、ビジネス ロジックは以前よりもはるかに複雑になっています。これを含めるようにビューを拡張するのは非常に面倒なので、これを含めるのは難しいと思います。ビジネス ロジックの残りの部分も存在するアプリケーション層で、これをより構造化することができると思います。
ビューをスクラップして、代わりにアプリケーションのアプリケーション層に移動するのは「正しい」ですか? 明らかに、ビューを持つことの利点は高速であることです。コードで約 100.000 行の計算を行うには、ある程度の時間がかかります。ただし、行をフィルター処理して約 10.000 にすることで最適化できます。
この問題に取り組む「標準」で最もクリーンな方法は何ですか?
asp.net-mvc - ビューモデルを DAL から直接返し、MVC のパフォーマンスを向上させますか?
私が MVC でよく目にするパターンは、データベースからドメイン モデル (またはリポジトリ) を読み込み、それをビュー モデルにマップするというものです。
このパターンについて質問があります。ビュー モデルに、大きなドメイン モデル オブジェクトの一部のプロパティしか含まれていない場合です。また、これはトラフィックが多くなる可能性のある Web サイトであるため、これはパフォーマンス面での究極のソリューションではないように思われSELECT * FROM TABLE
ます。単に必要な列を選択するのではなく、.
私が考えることができる別の方法は、DAL がドメイン モデルの代わりにビュー モデルを返すことですが、そのようなパターンが以前に使用されたのを見たことがありません。これは採用するのに悪いパターンですか? 他のパターンはありますか?それとも、いくつかのプロパティしか必要としない場合でも、大きなドメイン モデルをロードするオーバーヘッドを無視する必要がありますか?