問題タブ [dbcontext]

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.

0 投票する
1 に答える
3216 参照

visual-studio - Microsoft.Data.Entity.Design、Version = 10.0.0.0は、Visual Studio DeveloperPreview11用です。

私はここで何かを試みていますが、失敗し続けます。

Visual StudioDeveloperPreviewをWindowsServer2008R2にインストールしています。ご存知のように、今のところVS拡張機能はVS 11 Dev Previewと互換性がありませんが、回避策を見つけました。

VisualStudioExtensionsおよびVisualStudio11Dev。プレビュー

VS11にADO.NETC#DbContext Generatorをインストールしましたが、コード生成を実行しようとすると、次のエラーが発生します。

エラー:このテンプレートは、コンポーネントアセンブリ'Microsoft.Data.Entity.Design、Version = 10.0.0.0、Culture = neutral、PublicKeyToken=b03f5f7f11d50a3a'を読み込もうとしました。この問題とこのテンプレートを有効にする方法の詳細については、プロジェクトテンプレートのカスタマイズに関するドキュメントを参照してください。

参照の追加ページから確認しましたが、上記のようなdllはありません。

VS11Devでこの作業を行うことができる可能性があります。プレビュー?

0 投票する
2 に答える
7013 参照

entity-framework-4.1 - Entity Framework 4.1 Database Firstは、DbContextT4で生成されたクラスに主キーを追加しません

Entity Framework 4.1を使い始めたばかりで、「データベースファースト」モードを試しています。EFが「ADO.NetDbContextGenerator」を使用してモデルクラスを生成する場合、[Key]属性を使用してクラスの主キーを識別すべきではありませんか?これがないと、T4MVCScaffoldingと互換性がないように見えます。

詳細は次のとおりです。

Entity Data Model Designer GUIを使用して、既存のデータベースからモデルに単純な「国」テーブルを追加しました。GUIは、「PK」という名前の単一の整数IDキーフィールドを主キーとして正しく識別します。(残念ながら、私は新しいユーザーなので、スクリーンショットを追加できません。代わりにCSDLを以下に含めました。)ただし、EFが「ADO.NetDbContext Generator」を使用してコードを生成する場合、PKは識別されません。生成されたクラスのキーフィールドとしてのフィールド(以下のコードの抜粋を参照)。

「国」テーブルのCSDL:

自動生成されたコードは次のとおりです。

これにより、MVCScaffoldingT4テンプレートを使用してコントローラーをスキャフォールディングしようとすると問題が発生します。「主キーのように見えるプロパティはありません」というエラーが表示されます。NuGetパッケージマネージャーコンソールからのコマンドと出力は次のとおりです。

ただし、生成されたクラスを手動で変更して[Key]属性をフィールドに追加すると、上記とまったく同じスキャフォールディングコマンドが正常に機能します。

では、なぜEFDatabaseFirstとT4MVCScaffoldingが一緒にうまく機能しないのでしょうか。そして、足場の問題がなくても、EFクラスはキーフィールドが何であるかを知る必要はありませんか?

0 投票する
2 に答える
11103 参照

entity-framework - ライブラリを ObjectContext から DbContext に変換する

Entity Framework を使用してデータ アクセスの周りにファサードを非常に簡単にラップできるライブラリ (古いブログ投稿にあるコードに基づく) があります。それは ObjectContext を使用しており、私の目的には十分に機能しています。

しかし今、私たちは最初に DbContext を使用してコードを調査することに興奮しており、もちろん既存の取り組みを可能な限り再利用/適応させたいと考えています。

次のエラーが発生したときに、ファサードを利用しようとするまで、IObjectContextAdapter を使用してファサードを有効にするライブラリを単純に変換するだけで、すべてがうまくいきました。

型 'Employee' は、ジェネリック型またはメソッド 'DbContextManagement.FacadeBase' の型パラメーター 'TEntity' として使用できません。「Employee」から「System.Data.Objects.DataClasses.EntityObject」への暗黙的な参照変換はありません

MSDN は次のように述べています。

EntityObject 派生型は DbContext API ではサポートされていません。これらのエンティティ型を使用するには、ObjectContext API を使用する必要があります。

それは問題ありませんが、この不可能性を回避するためにリファクタリングを完了するにはどうすればよいでしょうか?

ここにいくつかのコードがあります(改行が導入されています):

FacadeBase.cs

EmployeeFacade.cs

Employee.cs

0 投票する
1 に答える
63020 参照

entity-framework - EF経由で挿入した後に自動IDキーを取得する

Entity Framework 4.1を介してレコードを追加するときに、DBの自動生成された主キーを取得する簡単な方法はありますか?

例えば:

SQLに相当するものは次のとおりです。

ところで、私はMySQLを使用していますが、SQLはMSSQLと同じです

0 投票する
1 に答える
724 参照

c# - エンティティへのlinqのfindメソッドについて混乱しています。第 3 レベルの子へのアクセス

これは私にとって非常に重要なので、こんにちは。次のテーブル構造があるとします。

ここに画像の説明を入力

次のコードは、find メソッドを使用して特定の MvrMeds にデータを挿入します。find メソッドは主キー PKMvrMedsId を検索し、次に示すようにテーブルを関連付けます。

しかし、Mvrs テーブルをどのように使用して上記と同じ挿入を行うのか疑問に思っています。

私の最初の試み

2 回目の試行

そして、これを過度に複雑にすることなくこれにアプローチする方法がわからないことを知っています.

0 投票する
3 に答える
1475 参照

asp.net-mvc-3 - カスタムメンバーシップ+Ninject+ InRequestScope=ObjectContextインスタンスが破棄されました

ObjectContextインスタンスはInRequestScopeに破棄されました!

私は問題を解決するためにウェブ上で数時間試しました。

ObjectContextインスタンスは破棄され、接続を必要とする操作には使用できなくなりました。

このこれこれこれのような同じ問題を持ついくつかの記事や投稿を見つけました

いろいろ試してみましたが、いつもエラーが発生します。


コード

コンテクスト

注入する

リポジトリ

、、のProjectImageRepository場合AddressRepository、実装は同じモデルに従います。RoleRepositoryUserRepository

スコープはリクエストであるため、Ninjectはリクエストの最後にオブジェクトを破棄する必要があります。ただし、状況によっては、リクエストを確定する前に破棄が発生します。

試み

問題がカスタムメンバーシップに関連しているかどうかはわかりませんが、いくつかのテストを行いました。次のとおりです。

注入する

したがって、これ以上のエラーはありません!

しかし、別の問題が発生します!repositoryおよびcontextはシングルトンオブジェクトであるため、更新されません。

たとえば、プロジェクトに新しいアドレスを登録しても、コレクションproject.Addressesは更新されません。

注:アドレスは問題なくデータベースに登録されています!

0 投票する
1 に答える
2177 参照

entity-framework - Entity FrameworkでContextオブジェクトへの参照を作成する方法とDBContextオブジェクトを操作する方法は?

私が取り組んでいるプロジェクトがあります。DBContext ジェネレーターで Entity Framework を使用することにしました (持続性を認識しないオブジェクトを保持するため)。現在、いくつかの問題が発生しています。

ソリューションを設定する方法は次のとおりです。

解決策:
- MyProject (私の Web アプリ プロジェクト)
- BusinessObjects (プロジェクト) には、すべてのオブジェクト (エンティティ) を含む myproject.tt ファイルが含まれています。それぞれが個別の .cs ファイルにあります。
- DataAccess (プロジェクト) には、myproject.edmx、myproject.Context.tt ファイルが含まれています

これが私の質問です:(私はこれらすべてに慣れていません)

オブジェクト (エンティティ) Job があり、このオブジェクトに対して select、insert、update、および delete メソッドを定義したいとします。どこでそれを行うのですか?BusinessObjects プロジェクト内にフォルダ Custom (すべてのカスタマイズを配置する場所) を作成しようとしました。次に、そこでメソッドを定義したかったのですが、ctx (コンテキスト) オブジェクトの新しいインスタンスを作成する方法がわかりません。

これが私のコードです:

表示されるエラー メッセージは、BestGigEntities が名前空間に存在しないというものです。BestGigEntities は BusinessObjects に存在するはずですが、BusinessObject プロジェクトからアクセスしようとするとなぜか表示されません。しかし、メインの Web プロジェクトから見ることができます。myproject.Context.tt では、Custom Tool Namespace として BusinessObjects を指定しています。なぜ私はそれを見ることができないのですか?

myproject.Context.cs ファイルを確認したところ、

すべて問題ないようです。すべての参照を適切に追加したとほぼ確信しています。これらのメソッドを間違った場所で定義しようとしているのかもしれません。

BestGigEntities は私の Web プロジェクトから見ることができ、そこから使用できます。

どんな助けでも大歓迎です。

0 投票する
2 に答える
741 参照

asp.net-mvc-3 - EF Code First から EDM ビューを生成する

Entity Framework Code First を使用してデータベースを作成したところ、すべてうまく機能しています。ただし、エンティティのスキーマを見たいです。最初にコードから EDMX を生成するのとほとんど同じですが、何もする必要はありません。これを行うにはどうすればいいですか?それ用のナゲットパッケージがあると聞きましたが、見つかりません。助けてくれてありがとう!

0 投票する
0 に答える
785 参照

entity-framework-4.1 - Entity Framework 4.2 - データベースで生成された主キー値で TPT 継承を実現する方法は?

次のシナリオで EF (4.2) を使用したいと考えています。

  • 既にデータベースが存在し (データベース優先のアプローチを選択したため)、それは SQL Anywhere DB です。
  • 持続性を無視するビジネス オブジェクトを使用したいので、DbContextテンプレートを使用POCOして EDM からクラスを生成します。
  • 私のエンティティには、単純な継承階層が 1 つあります。抽象ベース エンティティと 2 つの具体的な派生エンティティです。
  • データベースには、継承階層のタイプごとに 1 つのテーブルがあります (Table-Per-Type Strategy)。
  • これら 3 つのテーブルにはそれぞれ主キー列 ( Id、タイプ: integer) があり、具体的なエンティティと基本エンティティの関連付けは、Id両方のテーブルに同じものを含めることによって行われます (つまりId、具体的なタイプ テーブルの主キー ( )同時にベーステーブルへの外部キーです;かなり一般的なアプローチだと思います)。

EDM アシスタントは自動的に認識しないため、デザイナーで継承を手動で定義する必要がありました。つまり、記述されたエンティティ間に継承の関連付けが必要です。

ここまで大きな問題はありませんでした。ここで、当面の問題について説明します。私が使用するデータベースには制限があります。Primarykey値は、データベース関数を使用して、データベースによって生成される必要があります。before-insert-triggerで定義されたでこの関数を呼び出したいですbase-table

値がデータベースによって生成されたことをエンティティ フレームワークに知らせるために、のプロパティのプロパティを設定しますStoreGeneratedPattern(理解したように、これは、エンティティの新しいインスタンスを挿入した後に生成された値を取得するように EF に指示する方法です) )。Idbase-entityIdentity

派生エンティティの新しいインスタンスを作成し、それを対応する に追加しDbSetてコンテキストDbContextを呼び出すと、制約に違反していることを示す a がスローされます。DBのリクエストログを確認すると、ベースエンティティがベーステーブルに挿入されていることがわかりますが、派生テーブルに行を挿入すると、明らかに新しく生成されたのを使用していないため、上記のエラーが発生しますベース テーブルの新しいエントリ。SaveChangesDbUpdateExceptionforeignkeyId

それに対してデータベースレベルでできることはあまりないと思うので、質問は、EDMまたはDbContextを構成(または変更)してベース行を最初に挿入し、次に生成されたものを取得しIdて使用できるかどうかです。派生行の挿入。

この状況を回避するにはいくつかの方法があることを知っています (継承を使用しない、ストアド プロシージャを使用して新しい派生エンティティを挿入する、id 生成 db 関数を呼び出してエンティティにId自分でプロパティを挿入して設定する) が、現時点では上記の動作が最も好ましいので、「プランB」を決定する前に何かを見落とさないようにしたい.

このトピックに関する提案は大歓迎です。よろしくお願いします。

トリガーのコードは次のとおりです。

関数 "F_GET_NEW_ID" がトリガーで呼び出され、ベース テーブルの新しいエントリの新しい ID が生成されます。これには 2 つのパラメーターがあります: "Tablename" -> 新しい ID を生成する必要があるテーブルの名前、およびデータベースのすべてのテーブルの standardcolumn の値を取る 2 番目のパラメーター (新しい ID を生成するために必要です) )。

0 投票する
3 に答える
1683 参照

linq - Entity Framework(4.2)HasRequiredにより、予期しないLEFTOUTERJOINが発生します

Entity Framework(NuGetの最新バージョン)は、最初に定義されたもの以外のナビゲーションプロパティの結合を構築するときに、HasRequired構成を無視している可能性があります。

たとえば、次の構成のPOCOオブジェクト(Person)があるとします。

次のクエリで人のリストを読み込もうとしています。

Entity Frameworkは、次のクエリを生成します。

* The_Addresses *テーブルへの結合は(予想どおり)内部結合ですが、*The_Work_Places*への後続の結合は外部結合であることに注意してください。AddressプロパティとWorkPlaceプロパティの両方が必須としてマークされていることを考えると、両方の結合が内部結合であると予想されます。また、AddressプロパティとWorkPlaceプロパティをRequired属性でマークしようとしましたが、効果がありませんでした。

これはバグですか、それとも私は何かを誤って構成していますか?提案?