問題タブ [ef-model-first]

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

.net - 「モデルファースト」モデルからデータベースを作成するには?

MVCでモデルファーストアプローチを使用してDBを作成する方法に関するいくつかのチュートリアルに従おうとしています。デザイナーでエンティティを作成し、モデルから DB を生成しようとしています。SQLファイルを正常に作成しますが、実行できないようですか? そうするオプションはありませんか?ファイルを右クリックしても実行オプションは使用できず、ファイルを開いてコンテキストで右クリックしてもオプションは使用できません。空のDBに接続してから、モデルエンティティを使用してこのDBにエンティティモデルを作成し、モデルからDBを生成しようとしましたが、VS2010エクスプレス内からSQLを実行するオプションはまだありません. そこにない理由はありますか?

ありがとう

0 投票する
4 に答える
15454 参照

.net - EF モデル ファーストまたはコード ファースト アプローチ?

長所と短所などに関するトピックに関するかなりの数の投稿を読んだので、この質問は以前に何度も尋ねられたことを知っていますが、どのアプローチが自分に適しているかまだ判断できません。私は Web プログラミングの初心者で、SQL DB 管理者 / レポート作成のバックグラウンドを持っています。将来的には 30 ~ 40 のテーブルを持つことになるかもしれない独自の Web サイトを構築することにしました。

私は両方のアプローチを見てきましたが、デザイナーのシンプルさが好きで、モデル全体を目の前で見るのが好きなため、Entity Model アプローチを好みます。これは、1 つのスナップショットで全体像を示します。また、私は強力なプログラマーではありませんが、DbContext ジェネレーター テンプレートを使用して POCO を生成し、クラス間のすべてのリンクを行う方法に感銘を受けました。

ただし、私はモデル ファースト アプローチが好きですが、いくつかの欠点があると感じています。それらが実際の欠点であるかどうかはわかりません。それとも、モデル ファースト アプローチとコード ファースト アプローチについて十分に理解していないだけです。これには新しい。

モデル ファーストのアプローチを使用するのをためらう理由は次のとおりです。

- 主に、MVC 3 を使用したモデル ファースト アプローチのチュートリアルを見つけるのに苦労しているためです。 POCO を再生成しても失われない変更。MVC 3 関連のほとんどのチュートリアルでは、Code first アプローチを使用しているようです。ほとんどの人は、これはチューターが EF に集中するのではなく、tuts でより多くの MVC を表示したいためだと言います。個人的には、Microsoft が Code First の方法論を他の方法論よりも支持しているためだと思います :)

- バディ クラスを作成するのが良い方法である場合、MVC 3 についてこれを示す多くのチュートリアルが見つからないのはなぜですか? Buddy Classes は View Models の別名ですか? また、MVC 3 で使用されているこれらのバディ/ビュー モデルを示すマイクロソフトのチュートリアルが見つからないのはなぜですか?

-2 つのテーブル間で基本的な 1 対 1 の関係を作ろうとしていました。モデルでは、まず、テーブルの 1 つで FK を使用するのではなく、各テーブルの ID キーを同じフィールドに設定する必要があります。3 つ以上のテーブルが 1 対 1 の関係で互いにリンクされている場合、少し混乱する可能性があります。 . コードで最初にこれを回避する方法は、モデルビルダーを使用して手動で設定することです。MF では、私がまったくやりたくない XML に入ることで関係を変えることができると思います。

-コードファーストの問題に関するサポート/ヘルプの追加

Code First アプローチの使用を躊躇する理由は次のとおりです。

- 私は初心者のコーダーです。

-プロジェクトが拡大するにつれて、テーブルと関係を追跡することが非常に難しくなっていることがわかります。

-モデル図はありませんが、私はこのアイデアが本当に好きだと言わざるを得ません.

-構成クラスを介してエンティティをデータベースにマッピングすることは不可能だと思います:)。

- テーブルを更新するには、コードと DB を変更する必要があります。モデルでは、DB とコードを自動的に更新するモデルを最初に 1 つだけ変更します。バディ クラスを使用している場合は、これらも更新する必要があるかもしれません。

また、Code First にデータベースを生成させるのではなく、手動でデータベースを作成し、コード ファースト API を使用して EF にアクセスするという点で、Code First と Database first のアプローチを組み合わせている人もいます。

私の頭は、すべてのオプションと欠点、長所と短所でぐるぐる回っています。私は自分のウェブサイトの作成を続けたいだけで、どのアプローチをとるべきかを考えません. 私が言ったこと、および/または将来より主流になると彼らが考えていることに基づいて、どのアプローチが最適だと思うかについて、誰かが私に洞察を与えることができますか?

どうもありがとうデイブ

0 投票する
4 に答える
22598 参照

.net - Model First で DbContext を使用すると、新しいデータベースの初期化に失敗する

あきらめる。私はこれを見つけました: http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx そして、それはクールだと思いました。そこで私はすぐにモデルを再設計して、最高の 2 つの世界を活用しました。

しかし、現在、私のモデルは新しいデータベースの作成 (または既存のデータベースへのテーブルの追加) に失敗しています。次のエラーが表示されます。

Database First および Model First 開発用の T4 テンプレートを使用して生成されたコードを Code First モードで使用すると、正しく動作しない場合があります。Database First または Model First を引き続き使用するには、実行中のアプリケーションの構成ファイルで Entity Framework 接続文字列が指定されていることを確認してください。Database First または Model First から生成されたこれらのクラスを Code First で使用するには、属性または DbModelBuilder API を使用して追加の構成を追加してから、この例外をスローするコードを削除します。

で:

そして、それは私の接続文字列です:

ノート。後で初期カタログを追加して、うまくいくか試してみましたが、まったく同じでした。

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

.net - Model First アプローチを使用する場合にデータをシードする方法は?

だから私はMVC3とEF4を学んでいます。コードファーストの方法を試してみましたが、私には難しすぎました.クラスを問題なく作成できますが、外部キーと相互の関係を処理するときに難しい部分があります.

しかし、私は最初にモデルを使用しました。このようにして、視覚的に設計し、関係がどこにあるかを確認できます。

モデルが作成されると、SQL Express データベースに対して実行する SQL が作成されます。やった、やった。

今、テーブルにデータが必要です。もちろん、サーバー エクスプローラーを使用してそれらを追加することもできますが、作業を進めながらモデルに変更を加える可能性が高いです。そして、データベースを更新し続けます。そのため、手動でデータを入力し続けることはできません。DropCreateDatabaseIfModelChanges最初にコードを使用する場合は、メソッドを派生させてオーバーライドできることを知っていますseed

ただし、モデルファーストアプローチでこれを行うにはどうすればよいですか? 次のコードがあります。

もちろん、私のグローバルファイルでは:

んで、どうする?メソッドを実行するように指示するにはどうすればよいですか? 私は何を間違っていますか?

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

.net - .edmx ファイルから SQL スキーマを生成するときに、プロパティに別の列名を生成することはできますか?

EF 4.0.edmxファイルを「継承」しました。現在、特定のプロパティ名と列名は、生成された C# および SQL スキーマで同一です。それ以来、私は EF 4.1 にアップグレードし、コード生成項目を変更して、DbContextではなく を生成しましたObjectContext

私がやりたいことは、列名が異なる可能性がある SQL スキーマを生成することです。たとえば、;のIdプロパティ/列があるとします。クラス (T4 テンプレート生成を介して)Productと列(ダイアグラムから [モデルからデータベースを生成... ] コンテキスト メニュー エントリを介して) を生成し、コードベースの流暢な構成機能を使用して、二通。IdProductIdEntityTypeConfiguration<T>.HasColumnName()

これを行うことはできますか、それとも合理的な代替手段はありますか? 4.1 を使用してコードでこれをすべて実行できることはわかっていますが、この「移行的な」アプローチが可能かどうか疑問に思っています。

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

entity-framework - 最初に EF 4.1 モデルの画像データ型

Entity Framwork 4.0 を使用したプロジェクトがあります。モデルを描画し、SQL Compact 3.5 DB を生成します。

大規模な BLOB ストアが必要だったため、 Imageデータ型の列を作成しました( Binaryは 8000 バイトに制限されているため)。ただし、EF 4.1 に更新すると、モデルは暗黙のうちにBinary列を持つように変換されました。

心配する必要はありません。元に戻すだけです。問題は、画像が選択できなくなったことです。また、バイナリを指定して長さを大きな値、たとえば 100000 に設定すると、DB を生成しようとするとエラーが発生します。

EF 4.1 リリース ノート関連する ADO.net チームのブログ投稿関連する問題を説明する 3 番目の投稿、および関連する問題について議論する SO クエストから、コード ファーストのアプローチで動作するいくつかのポインターを見つけました。ただし、これらはすべて、 Code Firstアプローチを使用した問題について語っています。

Model Firstを解決するための指針はありますか?

ありがとう!

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

.net - ストアド プロシージャを使用した EF モデル ファースト

モデルファーストでEF 4を使用しています...モデルからデータベースを生成します。そのシナリオでストアドプロシージャを使用するにはどうすればよいですか? また、データベースで自動生成する必要があります..?

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

c# - EF モデルからデータベースを生成 関数のインポートを削除

わかりました、この質問を見ましたEntity Framework: Generate Database From Model は Model Store からストアド プロシージャを削除しますしかし、これは解決していないと思います。フィルタリングの選択で SQL Server で実行する必要がある関数がいくつかあります。そのコードを .NET で書くことができなかったので、その関数を SQL Server で関数として書きました。モデルファーストを使用していますが、SQL レベルでその関数が必要であり、データベースからモデルを更新するオプションを使用して関数をインポートします。しかし、Entity Designer で変更を加えてモデルからデータベースを生成すると、関数マッピングが消去されます。model-first と db-first を同時に使用すべきではないことは理解していますが、どうすれば問題を解決できますか? C# では記述できないこのコードがあり、LINQ クエリで必要です。インポートを作成し、データベースの関数にマップする EdmFunction 属性を使用して C# メソッドを作成すると機能します。しかし、モデルと SQL 関数の間のリンクが更新時に保持されるようにするにはどうすれば永続化できますか? LINQ-to-Entities で変換できる関数を作成することが唯一の選択肢ですか?

ここに私のSQL関数があります

(私は SQL の専門家ではないため、これが最善の方法ではない可能性があるため、より良い方法があれば修正してください)

DBからASP.NETに何もインポートせずにデータベースで実行するには、これが必要です。このコードを LINQ-to-Entities の SQL コードに変換できる C# に変換する方法があれば、それも歓迎します。

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

.net - EF4.1 NavigationPropertyを介して追加すると、10進型の精度がすべて失われ、フレームワークのバグが発生する可能性がありますか?

ここからダウンロードできるサンプルプロジェクトを作成しました。

手動で再作成する手順:

  1. 新しいMVC3Webプロジェクトを作成します。
  2. .edmxを追加します
  3. 「アカウント」という名前のエンティティを作成します。
  4. 'AccountLineItem'という名前のエンティティを作成します。
  5. 'AccountLineItem'にDecimalフィールドを追加します。
  6. 'Account'と'AccountLineItem'の間に1対多の関連付けを作成します。必ず、'Account'にナビゲーションプロパティを作成するオプションをオンのままにしてください。
  7. DBをどこでも更新するコードを追加します。HomeControllerでIndex()を使用しました。

    /li>

ご覧のとおり、私はDBをアカウントで更新し、AccountLineItemを値22.10で更新しています。ただし、このコードを実行すると、値22がSQLEXPRESSに精度なしで表示されます。

SQL 2008 R2ボックスを使用してこの動作を発見したので、問題がExpressにあるとは思われません。

他の誰かがこの振る舞いを再現できますか?私は露骨に間違ったことをしていますか?すべてのフィードバックを歓迎します。

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

c# - Entity Framework 4.0モデルデータベースからモデルを更新した後、最初の継承が失われます

私のアプリケーションでは、EntityFramework4.0モデルファーストを使用しています。Productベーステーブルのように継承を実装し、Productから継承するテーブルがいくつかありSpecificProductます。

継承はedmxファイルに表示されます。データベースを最初に設定するには、デザイナを右クリックして[モデルからデータベースを生成]を選択します。これにより、SQL作成スクリプトが生成されます。

SQLデータベースでSpecificProductテーブルにいくつかの変更を加え、モデルをアップグレードしたいとします。明らかにSpecificProduct、edmxファイルからテーブルを削除し、edmxデザイナーを右クリックして、[データベースからモデルを更新]を選択します。これにより、と
の間の継承が失われます。継承の代わりに、私は1対0..1の関係を持っており、の主キーも。の列になっています。 私のコードは利用可能な継承に依存しているため、プロジェクトはもうビルドされないため、これは実際には私が望む方法ではありません。ProductSpecificProductProductSpecificProduct

SpecificProductに挿入された主キー列を削除し、新しい1から0..1の関係を削除し、edmxデザイナーに継承を再度挿入することで、デザイナーファイルでこれを手動で修正できます。
これを自動的に行う方法はありませんか?

それとも、これは単にモデルファーストの試みの制限であり、私は気づいていませんでした(そして、これが本当に制限である場合は、再度選択することはありません)。