問題タブ [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.

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

entity-framework - EFDatabaseFirstでのエンティティのジェネリックリポジトリの定義

ビューをマップするために、CodeFirstからDatabaseFirstに移動しています。私のCodeFirstアプローチでは、次のような基本エンティティがありました。

すべてのクラスにIDがあるため、すべてのクラスをこの基本クラスから派生させました。そこで、このBaseClassを使用して汎用リポジトリを作成しました。私のリポジトリは次のようになります。

だから、このようにジェネリック型のパラメーターを指定するだけでリポジトリを作成することができました

DatabaseFirstでは、基本クラスからエンティティクラスを派生させることはできません。それを行う方法はありますか、それともあなたの提案は何ですか?

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

entity-framework - クラスを DBContext Generator から既存の POCO ドメイン クラスにマップする方法

私は Entity Framework とデータベース ファースト アプローチを初めて使用します。誰でも私を助けてもらえますか?

これがケースです:

プロパティのみを持つ、クリーンで通常のドメイン クラス (Person) があります。このクラスは、エンティティ フレームワークやデータ アクセス層に属するその他のものへの参照なしで、ドメイン クラスのみを含む VS プロジェクトで定義されます。

データベース テーブル (tblPerson) もあります。そのための EDMX を作成し、DbContext Generator を使用してそのための POCO クラスを作成しました。

エンティティ フレームワークの参照をドメイン クラスを持つプロジェクトから分離しておくことが重要であり、依存性注入と組み合わせたリポジトリ パターンを使用したいと考えています。

質問は:

Entity Framework POCO クラスを既存のドメイン クラスに「マップ」するにはどうすればよいですか? それらは同じ特性を持っています。プロキシ、バディ クラスなどについて読んだことがありますが、良い例は見つかりませんでした。

助けてください。


ドメインモデルクラスが次のようになっているとしましょう (単なる例):

データベーステーブルには同じ列があります:

ID (int、null 以外、主キー) 名前 (nvarchar(50)、null 以外)


アップデート:

わかりました、解決策を見つけました。Ladislav Mrnka が提案し、ObjectContext から派生したことを行いました。これがどのように行われるかを説明するページです: Entity Framework 4.0 – Part4: 独自の POCO を使用する方法

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

c# - データベースファーストでエンティティとプロパティ名を変更する

.netで本当に迷惑な命名規則を使用する既存のデータベースを使用する必要がある新しいアプリケーションを開始しています(テーブル名はテーブルのビジネスドメインを指定するいくつかのトリグラムで始まり、列名はテーブルのトリグラムで始まります、トリグラム大文字で、アンダースコアなどで区切られています)。

私がやりたいのは、単純な名前変更ルールを作成し(これは、最後のアンダースコアを見つけてその後すべてを取得するのと同じくらい簡単です)、それをEntityFrameworkに適用することです。特にデータベースが変更される可能性があり、何度も編集したくないので、エディターで名前を1つずつ編集する必要はありません。

私はデータベースファースト(データベースがすでに存在し、それが「マスター」であるため)とEF 4.x DbContext Generatorを使用しており、箱から出してすぐに非常にうまく機能します(ただし、クラスとプロパティの名前が間違っています)。

生成されたエンティティとプロパティの名前を変更するためにT4テンプレートを編集しましたが、リクエストを実行しようとすると、DbContextオブジェクトは、リクエストしようとしているエンティティと一致するテーブルを見つけることができず、次の例外が発生します。

エンティティタイプ[エンティティ名]は、現在のコンテキストのモデルの一部ではありません。

これは、テーブルが見つからない理由は明らかです。オンザフライで変更したときに、エンティティ名とテーブルを一致させる方法は何もわかりません。メソッドに命令を追加できることを読みましたOnModelCreating(DbModelBuilder modelBuilder)が、これはDatabase Firstでは使用されません(念のため、デフォルトのT4テンプレートで例外が追加されます)。

だから今私は立ち往生しています、私はその一致を指定する方法がわかりません。

これが私が持っているいくつかのアイデアですが、それが正しいか実行可能かどうかはわかりません:

  • 「複数/単数」APIを使用してエンティティの名前を変更しますか?汚い回避策のように聞こえます。しかし、それはうまくいくかもしれません(しかし試みませんでした)。
  • その場でEDMXファイルを編集する方法を見つける。
  • 後でEDMXを編集しますが、プロセスが複雑になる可能性があります(デザイナーで編集し、ツールを実行してEDMXを変更し、カスタムツールを実行してエンティティとDbContextを再生成します...今日はデザイナーで編集する必要があります)。
  • コードファーストを使用する(DbContextクラスの属性または命令を使用して、テーブル名とは異なるエンティティ名を使用する方が簡単なようです)が、既存のデータベースで使用する方が複雑ではないようです。

何か案が ?それとも私は何かを逃しましたか?

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

entity-framework - EF4 db-first: 不足している関係を追加する方法

db-first を使用して読み取り専用データベースのオブジェクト モデルを作成していますが、一部の関係が自動的に取得されません。たとえば、Foo.BarId は自動的に Bar オブジェクトに接続されません。BarId プロパティをクリックしても、コンテキスト メニューまたはプロパティ ウィンドウでバーに関連付けるものが表示されません。何も台無しにせずに手動で外部キーを要求するにはどうすればよいですか?

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

asp.net-mvc - EntitySetへの追加が機能しない

MVCプロジェクトのデータベースファーストORMEntitySetにオブジェクトを追加しようとしています。私は次のようなコードを使用します:

ただし、SaveChangesメソッドは、SqlClient.SqlExceptionによってスローされるData.UpdateExceptionをスローします。後者は言う

「値NULLを列'ID'、テーブル'Listings.dbo.Ads'に挿入できません。列はnullを許可しません。INSERTは失敗します。ステートメントは終了しました。」

私は心から同意します。直前に設定したように見えるのに、なぜIDがnullになるのかわかりません。助言がありますか?

ありがとう、
ネイサン

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

asp.net-mvc - MVC DB 最初の修正表示名

データベースを最初に使用して、mvc 4を使用しています。

ファイルを更新するたびにmodel.edmx、追加した表示名属性が削除されます。更新間で表示名属性を保持するにはどうすればよいですか?

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

asp.net - MetadataTypeがデータベースファーストアプローチで検証を行わないのはなぜですか?

Database-Firstを使用してモデルクラス(EDMXファイル)を生成し、「MetadataType」を使用して検証したいと思います。私はここで解決策を読みましたが、それらは私にとってはうまくいきませんでした。

これが私のコードです:

ここに欠けているものはありますか、または私のソリューションが機能しなかったのはなぜですか?

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

c# - Edmx に外部キーがありません

データベースファーストのアプローチを使用して、Entity Framework を使用してデータベースをマッピングしています。

問題はedmx、正確なデータベースをマッピングする必要があるファイルにテーブル間の FK リレーションが欠落していることです。これにより、関連するテーブルに直接アクセスできないため、クエリを変更する必要があります。

もちろん、クラスコードで直接変更すると、データベースで何かを変更するたびに消去されます(edmxが再作成されます)。

助けてください!!!

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

entity-framework - Database First モデル (EF 5) を使用してモデルに検証を追加する

モデルの状態に検証エラーを追加する方法を知っています。モデルクラスに検証アノテーションを追加する方法を知っています。問題は、最初にデータベースを使用すると、生成されたコードに触れたくないということです。再生成すると、カスタマイズが失われるからです。私はいつもパーシャルでカスタマイズしようとしますが、パーシャルで既存のプロパティに注釈を追加することはできません。

ここでのベストプラクティスは何ですか?

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

c# - カスタム get を使用してエンティティ フレームワークでスタック オーバーフローを取得する

データベースの最初のエンティティ フレームワーク アプリケーションにビジネス ロジックを追加しようとしています。address1 の長さを 35 に制限し、残りを address to に移動します。データベースではフィールドは Address1 と Address2 で、私の edmx では address1 と address2 です。パーシャルを使用して edmx を拡張しました。しかし、カスタム get 関数を呼び出そうとすると、現在のスレッドがスタックオーバーフローにあるという例外が発生します。

LimitAddressFieldTo35 を呼び出すときに例外が発生します。.net 3.5 に含まれるエンティティ フレームワーク バージョンを使用しています