問題タブ [entity-framework-5]

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 に答える
917 参照

asp.net-mvc - 別のプロジェクトでEF5rcモデルを使用したMVC?

私は EF5 と MVC の速度を上げようとしているので、ご容赦ください。DB ファースト環境で EF 5rc と MVC4 を使用する。

EF コードを別のプロジェクトに配置して、他のプロジェクトで再利用できるようにしたいと考えています。

私が探しているのは、EF プロジェクトの別の DLL を MVC プロジェクトのモデル部分に組み込む方法の例またはサンプルです。

RF プロジェクトまたは MVC プロジェクトでコンテキストを作成する方法について混乱していますか?

他のヒントをいただければ幸いです。

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

visual-studio-2010 - Entity Framework 5 / VisualStudio2010を使用したEDMXのテーブル値関数

Entity Framework 5 RC / Visual Studio 2010を使用するEDMXでテーブル値関数を使用できる場合はどうなりますか?

EDMXデザイナにオプションが表示されません。デザイナが.net4.5にあるように感じますか?私の疑惑は正しいですか?または、おそらくVisual Studio 11で?

私はまだプロジェクトを.net4.5にアップグレードできる立場にありませんが、テーブル値関数を使用する別の方法はありますか(おそらく、edmxを手動で変更しますか?)。

追加情報:

msdnに関するこのブログ投稿は、非互換性を確認するのに役立ちます。

一部の機能は、.NET4.5を対象とするアプリケーションを作成する場合にのみ使用できます。これには、列挙型のサポート、空間データ型、テーブル値関数、およびパフォーマンスの向上が含まれます。.NET 4.0をターゲットにしている場合でも、すべてのバグ修正とその他のマイナーな改善が得られます。

ただし、興味深いことに、このチュートリアルでは、EDMXを直接変更してTVFのサポートを追加することについては説明していませんが、古いベータ版のようです。XMLインテリセンスもチュートリアルで説明されている要素を検出しませんでしたが、別のスキーマを使用していたことが原因である可能性があります。残念ながら、チュートリアルを新しいEF5リリース候補に適用する時間がなくなったのですが、誰かが運が良かったかどうかを知りたいと思います。

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

c# - 列でNULLが許可されていても、値NULLを挿入できません

Asp.Net MVC 4のEntityFrameworkを使用してスキャフォールディングをテストしています(この記事に従ってください)。ドメインオブジェクトがフィールドでnullを許可し、データベースフィールドがnullを許可している場合でも、エラーメッセージが表示されることを除いて、正常に動作します。

列'IsSuccessful'、テーブル'MyTestProject.Persistence.TestContext.dbo.Prediction'に値NULLを挿入できません。列はnullを許可しません。UPDATEは失敗します。ステートメントは終了されました。

私のドメインオブジェクトは次のようになります。

生成されたWebページには、NotSet、True、Falseの選択肢があるドロップダウンボックスとしてIsSuccessfulが表示されます。データベースでは、列IsSuccessfulはnullを許可します。それでもエラーメッセージが表示されます。TrueまたはFalseを選択すると(データベースに正しく保存されます)、すべて正常に機能しますが、NotSetを選択すると機能しません。

確かにこれを回避する方法があるはずですか?

いくつかの詳細:

  • Visual Studio 2012 RC
  • Asp.Net MVC 4
  • EntityFramework.dllバージョン5.0.0.0
0 投票する
1 に答える
327 参照

.net - Entity Framework DbContext:エンティティは毎回構成されますか?

System.Data.Entity.DbContextインスタンス化されるたびにEntityFrameworkが構成されるかどうかを知りたいのですが。

なぜ私はこの質問を受けたのですか?

たとえば、メソッドをオーバーライドする手動マッピングを実行している場合、これはaがインスタンス化DbContext.OnModelCreating(...)されるたびに呼び出されるようです。DbContext

Entity Frameworkは、ある種の構成キャッシュなどを実行しますか?

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

entity-framework - 独立した関連付けに対する Entity Framework クエリは、過度に複雑なクエリを作成しますか?

最初に EF5 とコードを使用してプロジェクトを作成しています。

私のオブジェクト設計では、「独立した関連付け」を使用しました。この場合、プロパティ「FarmWhereCowLives」は「独立した関連付け」です。

しかし、特定の農場の最新の牛を選択するようにエンティティ フレームワークに依頼するクエリを実行すると、農場 ID を渡すことができます。たとえば、次のようになります。

(関連する場合に備えて汎用リポジトリを使用していますが、そうは思いません)

実行される sql (SQL プロファイラで確認できます) が複雑すぎるように見えますか?

例えば

質問は次のとおりです。

  1. ネストされた選択とは何ですか?
  2. EF がより効率的なクエリを作成しなかったのはなぜですか? たとえば、ネストされた選択なしですか?
  3. 牛オブジェクトの外部キー関連付けを追加する必要がありますか? 適切に記述されたクエリを EF に実行させるために、これを行う必要はありません。

多分私はここで何か間違ったことをしていますか?

乾杯アンドリュー

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

entity-framework - SaveChangesクエリ生成のパフォーマンス

レコードが同じタイプであっても、大量のレコードを保存する場合、SaveChangesは非常に遅いようです。以下の画像は、最大60000レコードを保存しようとするプロファイリングセッションを示しています。レコードは混合タイプですが、それらの多くは同じタイプを共有しています。私の予想では、SaveChangesによって呼び出されるCreateDbCommandDefinitionは、レコードタイプごとに1回呼び出されます。驚くべきことに、レコードごとに個別に呼び出されます。もちろん、これはパフォーマンスの低下につながります。

EF 4.3.1と5.0の両方でこれを確認しましたが、同じ結果です。データベースに挿入/更新されたレコードごとにコマンドが作成されないようにEFを構成する方法はありますか?

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

c# - Entity Framework: エンティティ プロパティを json 形式で保存する

と入力されたプロパティを持つエンティティがあり、それを JSON 形式で SQL Server にICollection<string>保存したいとします。varchar

これを達成する方法は?

前もって感謝します。

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

serialization - ApiController からデータを逆シリアル化する方法

Entity Framework Code First で使用するためにセットアップされた POCO オブジェクトがいくつかあります。

ASP.NET MVC 4 Web サイトの ApiController からこれらのオブジェクトの 1 つを返し、それをクライアント アプリケーションで使用したいと考えています。

Entity Framework が邪魔をしていたため ( Can an ApiController return an object with a collection of other objects? を参照してください)、EF プロキシをシリアル化しようとしていたためです。プレーンな POCO オブジェクトではなく、オブジェクト。そのため、これを回避するために DbContext でプロキシ生成をオフにしました。これで、シリアル化されたオブジェクトは (私の目には) 問題ないように見えます。

問題のオブジェクトは「タグ」です。これが私の POCO クラスです。

かなり標準的なものですが、ClientId と Client メンバーに注意してください。これらは EF Code First の「ナビゲーション」プロパティです。(すべてのタグは正確に 1 つのクライアントに属します)。

ApiController から取得したものは次のとおりです。

プロキシ生成を無効にすると、参照されたオブジェクトの自動読み込みが得られないため、Client メンバーは nil です。この場合は問題ありません。クライアント側でそのデータは必要ありません。

そのため、クライアント側でこれらのオブジェクトを逆シリアル化しようとしています。新しいクラスを作成するのではなく、クライアント アプリケーションで同じ POCO クラスを再利用できることを望んでいました。DRYとそのすべて。だから、私はしようとしています:

しかし、私は 2 つの問題に遭遇しました。どちらも EF Code First の規則によるものです。

問題 1 : 私の Tag クラスには Client メンバーがあるため、XmlSerializer はそれを逆シリアル化する方法がわからないという不平を言っています。これで十分だと思います (メンバーが XML で Nil だったので気にしないことを期待していましたが)。XmlSerializer コンストラクターで追加の型を渡すことができました。それを試みたところ、クライアントが使用する他のクラスについて不平を言いました。Client はあらゆる種類の他のオブジェクトを参照するため、それらすべてを渡す必要があります。

[DataContract] および [DataMember] 属性を使用して、クライアント メンバーを XML から削除しようとしました (DataMember としてマークしないことにより)。これにより XML から削除されましたが、XmlSerializer がそれについて泣き言を言うのを止めることはできませんでした。したがって、問題は XML にあるという事実ではなく、クラス定義にあると思います。

問題 2 : typeof(Client) を追加の型として渡そうとしたところ、インターフェイス メンバーが含まれているため、そのクラスを逆シリアル化できないと不平を言いました。これは、再び EF Code First の規則により、次のような Tags メンバーがあるためです。

そのため、参照型の問題を解決したとしても、POCO クラスを使用することはまだできないようです。

これに対する解決策はありますか、それともクライアント側で純粋に使用するために新しい DTO クラスを作成し、それらを ApiController から返す必要がありますか?

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

c# - EFプロキシオブジェクトを元のPOCOオブジェクトに変換する最良の方法は何ですか?

EFコードファーストコンテキストで使用しているPOCOオブジェクトがいくつかあります。したがって、データを入力するときは、POCO自体ではなく、実際にはEFプロキシオブジェクトを処理しています。

クライアントアプリケーションで使用するPOCOオブジェクトを返すASP.NETMVC4ApiControllerがあります。

私の「GET」メソッドは次のようになります。

シリアライザーがClientオブジェクトをシリアル化しようとすると、実際にはEFプロキシバージョンを処理しているため、実際には機能しません。これにより、問題が発生します。ApiControllerが他のオブジェクトのコレクションとともにオブジェクトを返すことができますか?を参照してください。

だから、私はこれを自分に行うことでプロキシ生成をオフにすることができますDbContext

これにより、プロキシではなくPOCOを処理していることが保証されます。ただし、クライアントクラスのメンバーのほとんどは、遅延読み込みを行っていたEFプロキシであったため、入力されていません。

したがって、私が本当に望んでいるのは、EFプロキシクラスを使用してデータを取得し、最後にメソッドから元のPOCOを返すことです。

コードでオブジェクト全体(ネストされたオブジェクトを含む)を最初から手動で作成せずに、これを行うにはどうすればよいですか?確かに簡単な方法があるはずです-または少なくともある種のヘルパークラス?

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

ef-code-first - EF5コードの多対多の関係まず、テーブル名を指定するにはどうすればよいですか?

私はEFにまったく慣れていないので、これを行う方法がよくわかりません。

次のような多対多の関係があります。

ここに画像の説明を入力

リソース (Recurso) をプロファイル (Perfil) に追加しようとすると、次のエラーが発生します。

Invalid object name 'dbo.RecursoPerfils

地獄はRecursoPerfilsどこから来たのですか?

この関係のテーブル名を指定するにはどうすればよいですか (できれば属性注釈を使用して)。

以下のモデルを参照してください。