問題タブ [ef-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.
c# - MVC3 プロジェクトで DB を変更するのは簡単ですか?
基本的に、サーバー上に存在するデータベースに接続して更新する MVC3 アプリケーションを作成しました。ただし、このデータベースはテスト用のものであり、プロジェクトをライブで展開するときに、実際のデータベースに接続するために必要です。私の質問は、この新しいデータベースを指すようにプロジェクト/アプリケーションを変更するのはどれほど難しいでしょうか?
データベースを最初に使用する方法を使用しましたが、接続文字列を変更する必要があることを認識しています。これほど単純なことはまずないと思います。
ヘルプ、ヒント、チュートリアルは大歓迎です。
c# - キーが見つかった場合でもEntity Frameworkがナビゲーションプロパティの行を挿入する
Entity Framework を使用しています。テーブル PersonCategory に外部キーを持つテーブル Person があります。Person Id は、自動インクリメント ID (1,1) です。個人エンティティを更新するたびに、カテゴリが見つかった場合でも、エンティティ フレームワークによって PersonCategory テーブルの行が挿入されます。
データベース優先設計を使用しています。
c# - MVC3自動生成コードを編集するためのベストプラクティス?
これが間違った場所にあるとすみませんが、そうだと思います。
そのため、MVC3インターネットアプリケーションを作成するときに、データベースファーストメソッドを使用し、クラスが生成されました。私はMVC3に不慣れで、c#とビジュアルスタジオにはかなり慣れていませんが、少し経験があります。
自動生成されたコードは、編集によって予期しない結果が生じる可能性があることを警告し、コードが再生成されると変更が削除されます。私が理解しているように、それはデータベースへの変更、ttファイルの再実行、またはモデルの更新を意味します。
しかし、それを編集して、再生成する必要がある場合に備えて変更を追跡することは大丈夫ですか、それともそれを実行するためのより良い方法がありますか?
助けてくれてありがとう。
c# - データベースファーストでエンティティとプロパティ名を変更する
.netで本当に迷惑な命名規則を使用する既存のデータベースを使用する必要がある新しいアプリケーションを開始しています(テーブル名はテーブルのビジネスドメインを指定するいくつかのトリグラムで始まり、列名はテーブルのトリグラムで始まります、トリグラム大文字で、アンダースコアなどで区切られています)。
私がやりたいのは、単純な名前変更ルールを作成し(これは、最後のアンダースコアを見つけてその後すべてを取得するのと同じくらい簡単です)、それをEntityFrameworkに適用することです。特にデータベースが変更される可能性があり、何度も編集したくないので、エディターで名前を1つずつ編集する必要はありません。
私はデータベースファースト(データベースがすでに存在し、それが「マスター」であるため)とEF 4.x DbContext Generatorを使用しており、箱から出してすぐに非常にうまく機能します(ただし、クラスとプロパティの名前が間違っています)。
生成されたエンティティとプロパティの名前を変更するためにT4テンプレートを編集しましたが、リクエストを実行しようとすると、DbContextオブジェクトは、リクエストしようとしているエンティティと一致するテーブルを見つけることができず、次の例外が発生します。
エンティティタイプ[エンティティ名]は、現在のコンテキストのモデルの一部ではありません。
これは、テーブルが見つからない理由は明らかです。オンザフライで変更したときに、エンティティ名とテーブルを一致させる方法は何もわかりません。メソッドに命令を追加できることを読みましたOnModelCreating(DbModelBuilder modelBuilder)
が、これはDatabase Firstでは使用されません(念のため、デフォルトのT4テンプレートで例外が追加されます)。
だから今私は立ち往生しています、私はその一致を指定する方法がわかりません。
これが私が持っているいくつかのアイデアですが、それが正しいか実行可能かどうかはわかりません:
- 「複数/単数」APIを使用してエンティティの名前を変更しますか?汚い回避策のように聞こえます。しかし、それはうまくいくかもしれません(しかし試みませんでした)。
- その場でEDMXファイルを編集する方法を見つける。
- 後でEDMXを編集しますが、プロセスが複雑になる可能性があります(デザイナーで編集し、ツールを実行してEDMXを変更し、カスタムツールを実行してエンティティとDbContextを再生成します...今日はデザイナーで編集する必要があります)。
- コードファーストを使用する(DbContextクラスの属性または命令を使用して、テーブル名とは異なるエンティティ名を使用する方が簡単なようです)が、既存のデータベースで使用する方が複雑ではないようです。
何か案が ?それとも私は何かを逃しましたか?
sql - Entity Frameworkを使用した多対多テーブルのMVC 3モデル
データベースにあるバージョンとテンプレートの組み合わせを選択するだけです。
db 構造は次のとおりです。
productversion と CodeTemplates で現在使用されているモデルは次のとおりです。
これが私が使用しようとしたものです:
ポップアップする最初のエラーは次のとおりです。
モデルの生成中に 1 つ以上の検証エラーが検出されました:
System.Data.Edm.EdmEntityType: : EntityType 'ProductVersionWithTemplateModel' にはキーが定義されていません。この EntityType のキーを定義します。System.Data.Edm.EdmEntitySet: EntityType: EntitySet "AppliedTemplates" は、キーが定義されていない "ProductVersionWithTemplateModel" 型に基づいています。
ここで何が欠けていますか、dbmodelbuilder バインディングですか?
回答(コメントの書式設定がひどいため):
c# - EntityFrameworkはintではなくshortを生成します
Oracleデータベースでは、EntityFrameworkデータベースを最初に使用しています。
どういうわけNumber(5)
かInt16
-short
最大Number(5)
値は99999
です。
最大Int16
値は32767です。
問題...マッパーに変換するように指示する方法はありNumber(5)
ますint32
か?
entity-framework - EntityFramework 5 - 取得値を null パラメータ名にすることはできません: デザイナーの使用中にフォント エラーが発生しました
デザイナーで Database First アプローチを使用して EF 5 を使用しているときに、奇妙なエラーが発生します。エラーは、「値を null パラメーター名にすることはできません: フォント」と言っています。また、デザイン領域に大きな赤い X が表示されます。デザイナーがこのエラーをどのように生成したのか正確にはわかりません。この時点では、デザイナーを使用して edmx を作成しただけです。
考え?これは VS 2012 RTM バージョンです。
c#-4.0 - データベースからエンティティを削除できません (Entity Framework 4.1)
データベースから項目を必死に削除しようとしましたが、これまでのところ機能させることができませんでした。表示されるエラー メッセージは次のとおりです。
私は EDMX (データベースが最初) と POCO オブジェクトで EF4.1 を使用しています。各タイプのリポジトリと、基本メソッドを実装する一般的なリポジトリがあります。
特定の問題は、アイテムを削除したいときです。子を削除することは問題ではありません-すべてが完全に機能します-問題は、エンティティ自体を削除するときです。
次のモデルを検討してください。「Bar」と1対多の関係を持つエンティティ「Foo」があります。リポジトリで次のメソッドを呼び出します。
GenericRepository の「削除」メソッドは次のとおりです。
GenericRepository の「保存」メソッドは単純です。
私が働きたいのはこれです:
残念ながら、アイテムを削除する唯一の (現在) 方法は、_entities.Database.ExecuteSqlCommand(SQL) を呼び出す SQL を実行することです。
私はたくさんのことを読みましたが、何もうまくいかないようです。何が起こっているのかを理解しようとする助けをいただければ幸いです。
ありがとう、
ホセ
asp.net - クエリが正しく機能しないのはなぜですか?
こんにちは私は私のデータベースを更新するためにこのクエリを使用しましたが、機能していません:
entity-framework - Entity Framework - 関連テーブルの列にマップされたエンティティの読み取り専用プロパティ
解決すべき興味深い問題がありますが、一般的ではありますが、Entity Framework では簡単に達成できないようです。次の 2 つのテーブルがあります。
プレイヤーは 1 つのチームにのみ所属できます。TPT (DB ファースト) を使用すると、これらのテーブルに 2 つのクラスがマップされます。
私が達成したいのは、Player エンティティの IsProfessional プロパティです。
IsProfessional プロパティを linq クエリで使用できるようにマッピングを構成することは可能ですか?
Player エンティティが実体化されるたびにそのフィールドにデータが入力されるようにするには?
すでに試しました:
- エンティティ分割。チーム マッピングを維持したいため、また関係が 1:1 ではないため、不可能です)
- Player エンティティを db ビューにマッピングします。Playerエンティティには他にも必要な関係があるため、好きではありませんでした。手動で作成できることはわかっていますが、データベースから edmx を更新すると ssdl がリセットされます。
ありがとう
解決
Gert Arnold の回答の 2 番目のオプションに基づいて、私のニーズに合ったソリューションは次のとおりです。
関数を作成します
/li>GetIsProfessional
(計算フィールドは通常、独自のテーブル フィールドからしか作成できないため、実行する必要がありました)
/li>Player
テーブルに計算フィールドを作成しました私はdb firstアプローチを使用しているので、データベースからモデルを更新するだけで、そのフィールドでクエリを実行でき、Playerオブジェクトが実体化されると事前に入力されます。