問題タブ [code-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.
entity-framework - BaseEntity での Entity Framework CTP4 非標準の主キー名の使用
主キーの使用に関する問題を解決するために、すでに数日苦労しています。誰かこのパズルを解くのを手伝ってください!!!
Code First アプローチを使用して CTP4 で Entity Framework を使用しています。私のプロジェクトでは、Huyrua によって公開されたリポジトリ パターンを採用しました。ここを参照してください。私はこのパターン、特に CTP4 の可能性に非常に興奮しています。
エンティティの定義には、いくつかのネスト レイヤーを使用します。一番下には、次のようないくつかの一般的なフィールドを含む BaseEntity があります。
次に、このクラスから具体的なエンティティを派生させます。次に例を示します。
ノート!主な違いが 1 つあります。DB テーブルの主キー名は「Id」ではありません。パターン PK_ を使用しています。このため、BaseEntity に PK フィールド定義を含めません。さらに、 use を使用EntityConfiguration
して、慣習にとらわれない主キーをマップします。
ここで問題があります。Person エンティティを使用しようとすると、「エンティティ タイプ 'KDC.Model.Entities.BaseEntity' のキーを推論できません」というエラーが表示されます。ObjectContext は、基本クラスで主キーを定義する必要があるようです。実験目的で BaseEntity の PK フィールド定義を移動すると、すべてが正常に機能したためです。しかし、私たちの場合、これは不可能です。なぜなら、テーブルごとに異なる主キー フィールド名があるからです。
どこが間違っているのかわからない!私を助けてください!!!
c# - 最初に EF コード - 複合キー
2 つの列を持つ従来のデータベースがあり、それらを 1 つの ID としてマップしたいのですが、これは可能です
例えば
次に、私のModelbinderは次のようになります
私が必要とするのは、マッピングの ProductID = ShortDescription + UserName のようなものです...これらの2つの列は一意のキー制約を共有しているため...
これが意味をなすかどうかはわかりませんが、提案は素晴らしいでしょう...データベースの設計について尋ねないでください=>これはそのままであり、変更すべきではありません...だから私はEFコードファーストができると思ったのです助けてください(クロスフィンガーを願っています)...データベースにはpkが定義されていないように見えるため、一意のキー制約だけが定義されています...
とにかく...助けは素晴らしいだろう..
entity-framework - コードファーストエンティティ構成ToTable問題
このようにオーバーライドで指定ToTable
した場合:OnModelCreating
それは作成しますdbo.my_teams
、しかし、私がそれを次のようにクラスに分けるならば:
作成しますdbo.Teams
。なぜ何かアイデアはありますか?
entity-framework - EF4 コードのみの CTP でのリレーションシップ マッピング (継承を使用する場合)
コードファーストの CTP 機能を備えた EF4 を使用して、単純な複合パターン エンティティ モデルを作成しています。
プリミティブ/コレクション派生クラスを分割する前は、すべてうまく機能していましたが、今では次のようになります。
混乱している可能性があると考えたので、DataAnnotation 属性ではなく、流暢なインターフェイスを使用して明示的に綴ろうと思いました。関係を適切に定義していると私が考えるものは次のとおりです。
しかし、私は間違っているに違いありません。
流暢な API を使用する他のさまざまな方法では、さまざまなエラーが発生しますが、何も成功しません。そのため、継承を使用しているときにこれらを別の方法で行う必要があるかどうか疑問に思い始めています。
手がかり、リンク、アイデア、ガイダンスは大歓迎です。
c# - CTP4コードの最初のEF4機能でのクエリ後のナビゲーションプロパティNull
CTP4とCode-Firstをいじり始めたところです。私は可能な出会い系サイトのために次の設定をしています:
これで、フレームワークはすべての適切なキーを使用してDBを作成するという素晴らしい仕事をします。ここで、ダミーデータを挿入し、次のクエリを起動しました。
クエリは適切なVoteエンティティを返しますが、Voteオブジェクトの2つのUserプロパティはNullです。フレームワークは、投票テーブルで参照されているユーザーの外部キーをこれらのプロパティに入力する必要がありますか?
many-to-many - EF4 CTP4 コード ファースト アプローチを使用して生成された多対多テーブルの命名規則
次の POCO クラスがあるとします。
EF4 CTP4 コード ファースト アプローチを使用してデータベース モデルを作成すると、目的のジャンクション テーブルが作成されます。
ただし、テーブル名と列名は、関連するクラス プロパティ名から生成されるため、理想的ではありません。私はむしろ持っています:
このシナリオで生成された列名を変更できるかどうか、またオプションで従業員が認定の前になるようにテーブル名を変更できるかどうかを知っている人はいますか?
ありがとう、ゲイリー
entity-framework - EF4 コードでは、最初のコレクションは遅延読み込みではありませんか?
Microsoft Visual C# 2010 Express、Entity Framework Feature CTP4 を使用。
Scott Gu の blogに基づいて、最初に小さなコードで EF4 を試しました。しかし、エンティティを取得するときにコレクションが初期化されていないようです。製品をカテゴリに追加すると、null 参照例外が発生します。私が見たすべての例で、コレクションが明示的に初期化されることはありません。私は何が欠けていますか?
これが私のコードです:
entity-framework-4 - EF4 コードのみの TPH オブジェクトのタイプの変更
私はEF4コードのみで何かを理解しようとしています。TPH を使用していて、保存された人物をインストラクターに、またはその逆に変更したい場合、どうすればこれを達成できますか。私のPOCOクラス:
私に人がいるとしましょう:
後で、この人を管理者にしたいと思います。どうすればこれを達成できますか。
以下はHireDate列を変更しますが、私の識別子フィールドPersonCategoryはまだ0です.EFに関する限り、それはまだ管理者タイプではありません
entity-framework - EntityFramework4コードファースト-nullに変更しても仮想プロパティが更新されない
したがって、私のドメインには次のようなモデルがあります。
次に、Webフォームプロジェクトで次のように更新します。
しかし、product.Methodology
以前にオブジェクトに設定されていたとき、これは更新されていなかったので、何も戻さないように戻したかったのです。つまり、product.Methodology = null;
回線が期待どおりに機能していないようです。
デバッガーで実行したところ、機能する場合と機能しない場合がありました。少し髪を引っ張った後、エンティティフレームワークが実行時にそのプロパティ用に作成していたプロキシタイプが原因であり、デバッガーで検査したときに機能していたことに気付きました。
そこで、この問題を修正するために、このハックを作成しました。これはうまく機能します:(注:現在はelse if
)
だから私の質問は次のとおりだと思います:
- 私は何か間違ったことをしていますか?
- 毎回ハックすることを覚えてそれを行うことができる別の方法はありますか?
- エンティティフレームワークコードの最初のCTPのバグと見なすことができますか?
乾杯、
チャールズ
.net - Entity Framework 4 CTP 4コードファースト:型にはまらない主キー名と外部キー名を操作する方法
Entity Framework 4に(重要な場合はCTP4とCode Firstを使用して)主キーと外部キーを自動的に識別するために使用される規則を変更する方法はありますか?キーをマークするために「id」サフィックスではなく「pk/fk」プレフィックスを使用するレガシーデータベースでEFを使用しようとしています。また、「fkAddressHome」や「fkAddressWork」など、アドレステーブルへの複数の外部キーがあることも珍しくありません。
テーブルごとにこれらの変更を指定する必要がないように、この動作を体系的に変更する方法をお勧めします。OnModelCreatingメソッドで列名をオーバーライドするオプションを調べましたが、その方法で1つの列を追加すると、すべてを追加する必要があることに気づきました。そして、それは私のDRYの感性に違反しました。
ただし、任意の解決策をいただければ幸いです。EF4、特にCTP4のCode Firstの機能強化は、本当に本当に素晴らしいです。EFの次のバージョンに他に何ができるかを見るのを楽しみにしています。助けてくれてありがとう。
アップデート
OnModelCreatingメソッドに以下を追加することで、関係をマッピングすることができました。
それが最もエレガントなアプローチなのか、それとも最終的に問題が発生するのかはわかりませんが、今のところは機能しています。