問題タブ [database-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.
.net - EntityFramework 流れるような API の「孫」関係のマッピング
私は、EF 流暢な API で非常に一般的なケースのように思われるものをマップしようとしていますが、壁にぶつかっています。私は次のクラスを持っています:
次の表を使用します。
会社
ID - 整数
区分:
Id - int CompanyId int (FK)
従業員
ID - int
名前 - varchar(50)
DivisionId - int (FK)
Employee テーブルに CompanyID FK がある場合、このマッピングは非常に単純になります。
ただし、Employee テーブルから Company テーブルへの直接の FK がないため、遅延読み込みのために Company オブジェクトの Employees プロパティをマップできないようです。
私は何が欠けていますか?
.net - エンティティマッピングのアンダースコアを置き換えます
EF4を使用してモデルを作成する場合、モデルがきれいに読み取れるように、すべてのアンダースコアとテーブル/列のプレフィックスを置き換えたいと思います。私たちのデータベースは次のような構造になっています。
私はそのようなエンティティ名を持ちたいです:
などなど。
edmxファイルを生成するとき、EFデザイナーは、データベースに表示されているとおりにすべてのエンティティに名前を付けます。この動作はT4テンプレートを使用して変更できることは知っていますが、デザイナーでエンティティの名前を変更できることを発見しました。これにより、edmxファイル内にEntitySetMapping要素が生成されるため、T4はやり過ぎのようです。T4テンプレートを使用せずに、edmxファイルを後処理したいようです。その置き換え後、デフォルトの動作が必要だからです。どのアプローチが最も適切で、その理由は何ですか?
c# - コードファーストとデータベースファースト
既存のデータベースに基づいてEntityFrameworkモデルを作成し、モデルからPOCOエンティティを生成しました。私のweb.configの接続文字列はEntityFrameworkではなく、単なる標準の接続文字列です(CSDL、SSDL、MSL参照がありません)。
アプリケーションをコンパイルできますが、実行すると次のエラーが発生します。
データベースファーストおよびモデルファースト開発用のT4テンプレートを使用して生成されたコードは、コードファーストモードで使用された場合、正しく機能しない場合があります。DatabaseFirstまたはModelFirstを引き続き使用するには、実行中のアプリケーションの構成ファイルでEntityFramework接続文字列が指定されていることを確認してください。データベースファーストまたはモデルファーストから生成されたこれらのクラスを使用するには、コードファーストで属性またはDbModelBuilder APIを使用して追加の構成を追加し、この例外をスローするコードを削除します
私の質問は、POCOが自動生成から来たことをコードのどこで認識し、コードファーストのように動作させるにはどうすればよいかということです。接続文字列でCSDLなどを参照したくありません。
asp.net-mvc-3 - Data-First によって自動的に作成されたエンティティにデータ注釈を追加する方法は?
モデル優先の場合、や など[MetadataType(typeof(ConceptMetadataSource))]
のすべてのデータ注釈を含む MetadataSource ファイルを添付するために使用します 。[HiddenInput(DisplayValue = false)]
[Display(Name = "Title")]
例えば:
現在、既存のデータベースがあるため、データベースファーストのアプローチを使用しています。今回は、edmxモデルによってエンティティクラスが自動生成されます。各エンティティ クラスの先頭に、以下のコメント行があります。
データベース内のテーブルを変更するとコードが再生成されるため、エンティティ クラスが再生成されるたびにデータ注釈が消去されます。
これらのエンティティクラスに注釈を付けるための最良の方法は何ですか? ありがとうございました。
asp.net-mvc-3 - 主キーのないブリッジ テーブル
データベース設計にブリッジ テーブルがあり、主キーがありません。ASP.NET MVC 3 のデータベース ファースト アプローチを使用してモデルを作成しようとすると、「テーブル/ビュー 'CRM_Test_1.dbo.SalesOrderProduct' には主キーが定義されておらず、有効なキーもありません」という警告が表示されたモデルが作成されます。主キーが推測される可能性があります。このテーブル/ビューは除外されています。エンティティを使用するには、スキーマを確認し、正しいキーを追加して、コメントを解除する必要があります。」
私は何か間違ったことをしていますか、この警告を消す方法はありますか??
ありがとう。
stored-procedures - DbContext ジェネレーターとストアド プロシージャ
注: Database First Method と DbContext で EF 4.2 を使用しています。これはコードファーストではありません。
Stored Proc メソッドを生成するために DbContext t4 テンプレートを取得しようとしています。そのための機能が組み込まれているようですが (基本の ObjectContext にマップされます)、何らかの理由でそれらの生成を頑固に拒否します。戻り値の型 (モデル型ではなく、単一の int) と関係があるのではないかと考えていますが、よくわかりません。
誰かが言う前に。はい、私は DbContext が Stored Procs をサポートしていないことを知っています。これが、t4 テンプレートが IObjectContextAdapter を使用して ObjectContext に変換する理由です。これは組み込み機能です。
以前は、メソッドは自動生成されていました。なんで今じゃないのかわからない。関数は .edmx ファイルに表示されます。これを解決する方法について何か提案はありますか?
asp.net-mvc-3 - ASP.NET MVC 3 の Entity Framework を使用したユーザー認証
データベースの最初のアプローチを使用してモデルを作成するために使用した既存のデータベースがあります。データベース図を参照してください。
私のソリューション ファイルには、データベースへの ADO.NET 接続を備えたモデルのクラス ライブラリと、ASP.NET MVC 3 Web アプリケーションがあります。
ここで取得しようとしている機能は、ユーザーがログインすると表示される情報がユーザーごとに異なるということです。ユーザー ログイン ページをデータベースの「ユーザー」テーブルにリンクするにはどうすればよいですか? 接続文字列を直接使用していますか?それとも、データベースを使用して作成したモデルを使用する必要がありますか?
asp.net-mvc - データベースの最初のモデルでDataAnnotations属性が削除されないようにする方法
エンティティフレームワークを備えたasp.netmvc3アプリケーションがあり、DatabaseFirstモデルを使用してセットアップしました。
以下の手順:1。テーブルを使用してデータベースを生成します2. ADO.NETエンティティデータモデルファイル(.edmx)を作成し、テーブルをインポートしました3.デザイン内にコード生成アイテムを追加し、ADO.NET DbContextGenerator4を使用しました。すべてのテーブルで作成されたModel1.ttホルダーモデル
モデルを編集し、DataAnnotations属性で更新しました(例としてよく知られているものです)
これで、データベースに変更を加えてedmxファイルに更新すると、すべてのモデルが上書きされ、DataAnnotations属性が消えます。
私の質問:データベースファーストモデルを使用し、コードファーストモデルで自由に実行できるように、特定の検証のためにモデルを編集するにはどうすればよいですか?(サードパーティのツールソリューションはご遠慮ください)ありがとう
entity-framework-4 - EF データベース ファースト - マッピング エラー 3025
EFを初めて使用し、「データベースファースト」で何かを試しています。
私は自分のdb 3テーブルに持っています:
テーブルPurchaseUsers
は、購入を使用している参加者を知るためのものです。
最初はそのテーブルに PK がありませんでしたが、ファイルを保存しようとすると次のエラーが発生しましたPurchase
。少しグーグルで調べたところ、このエラーを回避するには PK を追加する必要があることがわかりました。
しかし、PK を追加するとマッピング エラーが発生し、これを解決する方法やマッピングを作成する方法がわかりません。テーブルPurchaseUsers
自体は .edmx モデルには表示されませんが、モデル ブラウザーのストアに表示されます。
ありがとう。
アップデート
今日、データベースの列の名前を変更しました。「データベースからモデルを更新」により、モデル内のテーブルに新しい列名が追加されましたが、古い列は削除されませんでした。もう一度ゼロから始めなければなりませんでした。更新機能がうまく機能していないようです。
c# - データベースからEntityFrameworkデータモデルを完全に置き換えることは一見不可能に見えます
基本的に、スキーマが変更されたSQLServerデータベースがあります。この場合、EFデータモデルを更新する必要があります。これは、テーブルを追加または削除するだけの場合は問題ありません。デザイナに移動し、存在する複数の場所の1つから「データベースからモデルを更新...」を見つけて、ウィザードを実行します。
残念ながら、ウィザードではデータベースからモデル全体を置き換えるだけではありません。また、一度に1つのことしか実行できません。したがって、複数のスキーマ変更を行うという不幸な決定を下した場合、さらに悪いことに、私が行ったことを忘れてください。モデルからテーブルを追加、更新、および削除する複数の手順を実行する必要があります。
これは明らかに面倒です。したがって、より良い手順がないため、モデルを吹き飛ばして、データベースからモデルを再作成するすべての手順を実行する必要があります。クラップ:接続文字列を構成ファイルに残しました。これを削除してウィザードを最初からやり直す必要があります。そうしないと、同じエンティティクラス名が生成されず、すべてのコードが壊れてしまいます。
なぜこれでモデルを吹き飛ばしてデータベースから生成できないのですか?さらに重要なことに、なぜ他の誰もこの質問をしなかったのですか?人々は何をしていますか?