問題タブ [entity-framework-ctp5]
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 - POCO クラスを含む DbContext にストアド プロシージャが表示されない
DbContext に追加されたストアド プロシージャが表示されないのはなぜですか? DbContext は、CTP5 リリースで導入されたテンプレートによって生成されます (POCO クラスを使用)。
このチュートリアルで述べたようにストアド プロシージャを追加しました: http://thedatafarm.com/blog/data-access/checking-out-one-of-the-new-stored-procedure-features-in-ef4/
さらに、エントリがコンテキストに追加されているかどうかを検索しました。結果は次のとおりです。
同様の質問は次のとおりです。
EF4 が関数のインポートをサポートするメソッドを生成しないのはなぜですか?
しかし、私はすべての提案をしました。
これはストアド プロシージャです。
私は何が欠けていますか?
ありがとう
entity-framework-4 - Entity Framework: CodeFirst で削除ルールを設定する
EF4 CTP 5、CodeFirst を使用しています。
最初に私のクラスを見てください:
私の目標は、Guest-Language 関係に特定の「削除ルール」を設定することです。言語が削除されたときに、対応するゲストを削除したくありません(カスケード削除はありません)。代わりに、ゲストの LanguageID を「Set NULL」にする必要があります。
流暢な API がここで私をサポートしてくれることを期待していました。しかし、必要なオプションを提供しない .WillCascadeOnDelete(bool) 以外に役立つものは見つかりませんでした。何か見逃しましたか?それとも、これは CTP 5 に実装されていないだけですか?
助けてくれてありがとう!
.net - Entity Framework CTP5コードファースト:Table-Per-Hierarchyマッピングでディスクリミネーター列のタイプを指定するにはどうすればよいですか?
ADO.NETチームのこのブログ投稿では、例として、EntityFrameworkCode-FirstのFluentAPIで階層ごとのテーブルマッピングを定義する方法を示しています。これは(少し簡略化された)例です:
...およびTPHマッピング:
Type
ここでは明らかに、モデルクラスに関連するプロパティを持たないデータベーステーブルの「純粋な」識別子列です。それは大丈夫で、私が欲しいものです。
このマッピング用のDBテーブルを作成すると、SQLServerの列Type
のタイプはになりますnvarchar(MAX)
。
Fluent APIでディスクリミネーター列のタイプを構成する方法はありますか?
たとえば、派生モデルクラスを区別するためのType
可能な値を含む識別子列があります。"A", "B" or "C"
SQL Serverの列のタイプを構成するにはどうすればよいvarchar(1)
ですか?
(たとえば、設定して文字値を単純に使用しようとしました(一重引用符に注意してください)。ただし、これにより、型が識別子列として許可されていないことm => m.Requires("Type").HasValue('A')
を示す例外がスローされます。)char
entity-framework - Sql Server CompactEdition4.0でEFCTP5を使用する場合のEntityFunctions.TruncateTimeの代替
私はEFCTP5コードを使用しています-最初にSQLCE4.0を使用します。2つのDateTimeプロパティ間で時間に依存しない日付比較を実行しようとしています。
linq to entitesはDateTime.Dateプロパティを解析できないため(これは良かったと思います)、解決策はEntityFunctions.TruncateTimeを使用することですが、これはSqlCE4.0では機能しないようです。
2つの日付の年、月、日を手動で比較できます。これは機能しますが、コードが本来よりもはるかに冗長になります。理想的には、クエリを変更してロングハンドバージョンを使用し、完全なSQLServerとSQLCE4.0の両方で機能するようにしたくありません。
したがって、誰かがこれに対するクリーンで賢い解決策を持っていますか?解決策はおそらく表現の書き直しを伴うと思いますが、どこから始めればよいのかよくわかりません。
どんな助けでも大歓迎です、
ポール
.net - Entity Framework CTP5コードファースト:クラスを別のクラスの複数のコレクションにマッピングする
EF CTP5コードを使用-最初に、あるクラスに複数のコレクションを含み、別のクラスを指すクラスモデルをマッピングしようとしています。これが私が意味することの例です:
DbContext
次のように、さらにカスタマイズせずにこのモデルからデータベースを作成させると、次のようになります。
...次に、SQL Serverに2つのテーブルがあります。1つの列Companies
のみの単純なテーブルと次の列のテーブルです(「FKRN」は、SQL ServerのEFによって作成された「外部キー関係名」を意味します)。CompanyId
People
CompanyId
最後の3つの列には、テーブルの主キーとのすべての外部キー関係がありCompanies
ます。
今、私はいくつかの質問があります:
1)テーブルに3つの外部キー列があるのはなぜですか?
People
私は実際に2つを期待していました。3番目の列public Company Company { get; set; }
からプロパティを削除すると消えますが、クラスの参照プロパティも失われます。Person
CompanyCompanyId2
Company
2)プロパティをテーブルから削除したとしPerson
ます(モデルでは実際には必要ありません)。CompanyCompanyId
残りの2つの外部キー列に自動作成およびとは別の名前を付ける方法はありCompanyCompanyId1
ますか?(たとえば、FCompanyId
およびコレクションとMCompanyId
の関係を示すために。)FemaleEmployees
MaleEmployees
CompanyId
3)テーブルに1つの外部キーのみを使用してこのモデルを定義する方法はありPeople
ますか?確かに、Person
クラス内に差別化する追加の列が必要になります(のようにbool IsFemale
)。PersonはFemaleEmployees
またはMaleEmployees
コレクションのいずれかであり、両方に含まれることはありません(この例では当然)。したがって、SQLを使用すると、のようなものでこれらのコレクションをフェッチできますWHERE IsFemale = true/false AND CompanyId = 1
。この方法で2つのコレクションをロードするためのヒントをEntityFrameworkに与えることができるかどうか疑問に思っています。(ここでは、両方が派生するaFemalePerson
とclassによってモデルを拡張することは避けたいと思います。MalePerson
Person
これらの派生クラスは空で人工的であり、SQL Serverへのマッピングを有効にする以外の目的はなかったため、基本クラスとして使用し、たとえばTable-Per-Hierarchyマッピングを使用します。)外部キーCompanyId
が1つしかない場合は、それを作成できnon-nullable
ます。 2つの外部キーでは不可能です(同じ行で両方がnull以外になることはありません)。
事前にフィードバックや提案をありがとうございます!
c# - EF4 CTP5:MEFモジュールを介してモデルを拡張-TPH-OnModelCreating
より良い見出しが見つからないことをお詫び申し上げます。MEFモジュールを介してEF4CTP5モデルを拡張しようとしています。アイデアは、いくつかの基本的なエンティティを指定することです。これらの基本エンティティは、ソリューションモデルアセンブリのContextクラスの隣にあります。
たとえば、Variableというエンティティがあります。変数は非常に一般的なエンティティであり、アプリケーションの一部のモジュールで特別な変数エンティティを指定して、より詳細なプロパティを提供する必要がありますが、それらは同じテーブル(TPH-階層ごとのテーブル)に格納する必要があります。
そのために、インターフェイスIModelContextExtensionを指定しました
カスタム変数を使用する各モジュールは、このインターフェイスを実装するクラスをエクスポートする必要があります。モデルのOnModelCreatingメソッドで、登録されている各モジュールをループし、そのモジュールのOnModelCreatingメソッドを呼び出します。次に、提供されたIModelBuilderFacadeで「RegisterVariableType」などを呼び出して、Variable-Derived-Type(MySpecialVariable2など)をアナウンスできます。
**興味深い部分:** Variable-Derived-Typeが別の(MEF-Loaded)アセンブリにある場合を除いて、RegisterVariableTypeメソッドは非常にうまく機能しているようです。別のモジュールから変数を登録すると、完全なマッピングが破損しているように見えます。なぜなら、リポジトリに変数を追加しようとすると、追加中に「シーケンスに要素が含まれていません」と表示されてクラッシュするからです。ロードされたモジュールからタイプを削除すると、期待どおりに機能します。
誰かが興味を持っているなら、私はIRepositoryのものを投稿しますが、それは問題ではないと確信しています。
ここに、私のコンテキスト(DbContextから派生)クラスのOnModelCreatingメソッドがあります。
RegisterVariableType関数は、modelBuilderFacadeに格納されているIEnumerableに(Variable派生)型を追加します。
タイプを追加した後、自分のMap関数を呼び出してTPHマッピングを実行します。
ここでMap関数:
そしてここでRequiredMappingActionFactory
うまくいけば、誰かが私を助けてくれるといいのですが、よろしくお願いします、
ケリオ、クリス
asp.net - 以前に作成したプロジェクトを wcf サービス クラス ライブラリから参照できないのはなぜですか?
警告 1 参照されているアセンブリ "C:\Users\rzv\Desktop\CompanyAnalyse1.0\AnalyserModel\bin\AnalyserModel.dll" は、"System.Web、Version=4.0.0.0、Culture= に依存しているため、解決できませんでした。ニュートラル、PublicKeyToken=b03f5f7f11d50a3a" は現在対象のフレームワーク ".NETFramework,Version=v4.0,Profile=Client" に含まれていません。ターゲット フレームワークにないアセンブリへの参照を削除するか、プロジェクトの再ターゲットを検討してください。
なぜ私はこれを得るのですか?AnalyserModel は、エンティティ フレームワーク コードの最初の 5 を使用してデータベースにデータを保存するクラス ライブラリです。AnalyserModel のメソッドを使用する新しい WCF サービス アプリケーションを作成しようとしました。なにが問題ですか?
c# - EntityFrameworkCTP5を使用したレガシーデータベースとの関係のマッピング
Code First /FluentAPIを使用して2つのエンティティをEntityFrameworkCTP5と一緒にマッピングするのに問題があります。このデータベースは、当社が切り替えている別のアプリケーション(Exact MAX)の古いデータベースであり、倉庫での出荷を管理するために自分で使用するアプリケーションを作成しています。この投稿で言及されているエンティティを含む古いデータベースには何も保存されません。
エンティティは、アドレスが1つしかないSalesOrderと、多数のSalesOrderを持つことができるAddressです。列名を指定する必要があり、それが問題の1つです。もう1つは、アドレスに、SalesOrderの一致する列にリンクする顧客IDとアドレスIDの2つのキーがあることです。列名は恐ろしいものです。SalesOrdersのテーブルSO_MasterのCUSTID_27とSHPCDE_27、アドレスのテーブルSHIPPING_MASTERのCUSTID_24とSHPCDE_24です。
私は結局昨夜遅くあきらめました。この投稿のコード行はSalesOrderのマップからのものであり、最後の2つの部分はSalesOrderとAddressをマッピングするためのものです。Google検索から一緒にスクラップした各キーのマッピングがありますが、2つの別々のパスとして実行する必要があるかどうかさえわかりません。取得されたアドレスレコードはそれ自体でOKですが、SalesOrdersのレコードはそうではありません。取得された1つのSalesOrderレコードには有効な住所がありましたが、残りのSalesOrdersにはnullの住所がありました。
必要に応じて、データ注釈を使用しても問題はありません。代わりにLINQtoSQLを使用することもできますが、これを使用した解決策があるかどうかを確認したいと思います。EFはこのデータベースに最適な選択ではないかもしれませんが、コードは十分に分離されているため、実験することができます。VisualStudioExpressとSQLServerExpress 2008 R2を使用していますが、デザイナーを使用できるものが見つからなかったため、CodeFirstを使用しています。
この投稿をお読みいただき、ありがとうございます。
OK、私はデータ注釈を使用するというVulgarbinaryの提案を採用し、必要な場所でForeignKey属性を使用することになりました。それでも、FluentAPIを使用してアドレスを顧客にマッピングする必要がありました。正確な理由はわかりません。住所レコードは、FluentAPIマッピングなしで空の顧客とともに戻ってきました。アドレスに注文とアドレスをリンクするためのキーが2つありますが、顧客がアドレスマッピングに使用するためのキーは1つしかないためだと思います。
Fluent APIの使い方はもう少しよく理解できたと思いますが、明らかにもっと読む必要があります。戻って一部の属性をFluent行に戻すことはできるかもしれませんが、作業中のアプリケーションにとってはそれだけの価値はありません。
entity-framework - 多対多の関係にあるオブジェクトを削除することはできません
これらは私の単純化されたエンティティです:
問題は、結合テーブルがユーザーテーブルを参照し、efがユーザーを削除する前に結合テーブルからレコードを削除しないことです。
テストケースを書いてみたところ、次のことに気づきました。
同じコンテキストを使用してロールを持つユーザーを追加し、変更を保存し、変更を削除して再度保存すると、機能します
しかし、挿入用と削除用の2つの異なるコンテキストを使用すると、このエラーが発生します
entity-framework - Entity Framework CTP5 (Code First) モデリング - ルックアップ テーブル
次のテーブル構造を想定します。
テーブル:
割り当てテーブルは、割り当てられたリソースとタスクを関連付けます。Assignment poco クラスを作成する必要がないように、この構造をモデルビルダーでマッピングすることは可能ですか?
いいえ:
モデル ビルダーを使用して、割り当て poco クラスを作成せずにタスクをリソースにマップするにはどうすればよいですか?