問題タブ [efpocoadapter]
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 - DataContractSerializer: DataContract/DataMember 属性なしでクラス/メンバーをシリアル化する方法
DataContractSerializer
クラスとメンバーをDataContract
およびDataMember
属性でマークする必要があります。ただし、私の場合、クラスは EFPocoAdapter フレームワークで自動生成され、これらの属性は存在しません。
これらの属性が存在しない状態で、DataContractSerializer を使用してすべてのメンバーのシリアル化を強制するにはどうすればよいですか?
アレクデジ より:
これは 3.5SP1 で変更されました 。
entity-framework - EFPocoAdapter-PopulatePocoEntityにnullのPocoEntityがあります
EFPocoAdapterでEFを初めて試しています。1つのテーブルと2つのタイプがあり、それぞれが抽象基本クラスを継承する、比較的単純なTPHシナリオがあります。
私のモデルはEdmGenを介して検証され、PocoAdapter.csファイルとxxxEntities.csファイルも正常に生成されます。(実際、名前空間の問題がいくつかあり、次にどこに行くかがわかるまで、現在手作業で調整しています。)
簡単なテストを実行してデータを取得すると、次のようになります。
誰かからのアイデアはありますか?
したがって、もう少しデバッグした後、これはプロキシに関連していると思います。PocoAdapterBase内には、次のメソッドがあります。
_pocoEntityを設定する行は、nullを返すCreatePocoEntityProxyを呼び出します。
私が見つけたより多くの情報。
c# - EFPocoAdapter を使用して Persistence Ignorance (POCO) クラスにプロジェクションを実行できない
次のような単純な POCO クラスがあるとします。
次のように、それ自体への射影を使用してクエリを実行すると、次のようになります。
...私は得る:
未処理の例外: System.ArgumentException: 'Id' は型 'ORMTest1Model.Users' のメンバーではありません
... System.Linq.Expressions.Expression のメソッド ValidateMemberInitArgs(...) に由来します (Reflector を使用)。
このメソッドでは、binding.Member.DeclaringType からの型は PocoAdapters.UserAdapter (生成されたもの) 型であり、変数 "type" からの型は User (POCO クラス) 型です。
ということで・・・何故か混み合っています。
興味深いことに、poco クラス User の正確なコピーである MyUser クラスを作成すると、正常に動作し、ValidateMemberInitArgs(...) の両方の型が MyUser 型になります。
誰でも問題を再現し、解決策に光を当てることができますか?
ありがとう!
(プロジェクトのディスカッション リストの同じ質問へのリンク: http://code.msdn.microsoft.com/EFPocoAdapter/Thread/View.aspx?ThreadId=2138 )
entity-framework - EF4 の POCO テンプレートの使用中に「メタデータ情報が見つかりません」?
EF4 用の POCO テンプレートをインストールしました。私のモデルにはAnnouncementTextという単一のエンティティがあり、T4 ファイルは適切に生成されているようです。この新しいエンティティにアクセスしようとすると、自動生成されたプロパティにアクセスすると、次のエラーがスローされますMyObjectContext.AnnouncementTexts
。
InvalidOperationException: EntityType 'MyNamespace.AnnouncementText' のマッピングおよびメタデータ情報が見つかりませんでした。
POCOのプロパティAnnouncementText
はデータベースの列と一致しているようで、自動生成されたコードは一切変更していません。
スタック トレースは次のとおりです。
ソリューションからファイルを削除.tt
し、モデルでコード生成を有効にすると、問題なくプロパティにアクセスできます。
これが役立つ場合に備えて、私のコードは次のとおりです。
何が間違っている可能性がありますか?
entity-framework - EF4 の関数インポートから POCO を取得できますか?
Entity Framework 4 のコンテキストでは、関数のインポートを追加するときのデフォルトの動作は、明らかにいくつかのプロパティ変更通知を実装する必要がある 経由ExecuteFunction<T>()
で呼び出すことです。T
(私の場合、から派生した複合型を生成していComplexObject
ます。)
変更通知は必要ありませんし、必要ありません。また、これらの sproc 呼び出しの後に POCO を送信する必要があります。
EF sproc 呼び出しから直接 POCO を取得する方法はありますか? そうでない場合、sproc の結果を POCO に変換するための推奨事項はありますか?
(私はPOCO Templateで簡単に遊んだことがありますが、ストアド プロシージャをまったくサポートしていないようです。)
entity-framework - モデルにPOCOテンプレートとFKを備えたエンティティフレームワーク-NullRefException
VisualStudioギャラリーからダウンロードしたMicrosoftのPOCOコード生成テンプレートでEntityFramework4を使用しています。また、データベースからEFモデルを生成するときに、デフォルトのオプションである「モデルに外部キーを含める」を選択したままにします。
私はこの問題を非常に単純なモデルで再現することができました。オプションの1対多の関係にある2つのテーブル/クラスのみです。この場合、私は住所と人を使用しています。個人は1つまたはゼロのアドレスを持つことができ、アドレスはゼロから多数の人々を持つことができます。
テーブルは次のようになります。
Addressオブジェクトを作成し、それをデータベースから取得した既存のPersonオブジェクトに追加しようとすると、null参照例外が発生します。
コールスタックを掘り下げてみると、例外は私のコードやテンプレートで生成されたコードからではなく、AddressID
セッターのPersonクラスのランタイム動的プロキシ内でスローされています。(具体的には、System.Data.Objects.EntityEntry.FixupEntityReferenceByForeignKey(EntityReference reference)
メソッド。)
POCOテンプレートの代わりにデフォルトのEFコード生成を使用した場合、この例外は発生しません。POCOテンプレートを使用しても発生しませんが、データベースからモデルを生成するときに[モデルに外部キーを含める]チェックボックスをオフにします。
以下を追加すると、エラーが消える可能性があります。
POCOテンプレートを使用し、モデルに外部キーを含めることの組み合わせで、永続オブジェクトを操作するときにこの種のコード変更が必要になる理由がわかりません。これは既知のバグですか?私は何かが足りないのですか?これは何らかの理由で設計によるものですか?
entity-framework - EF 変更の保存が突然機能しなくなった
EFv4 POCO コンテキストの SaveChanges() が突然機能しなくなりました。エラーを発行します"Cannot insert NULL value into column 'postalcode' of table Clients"
Client
PostCode
entity には(properties postalcode
, postname
) エンティティへの参照が含まれています。PostCode 参照は null ではないため、プロパティではありません。私Client
のエンティティはエンティティから参照されていDocument
ます。
これがコードです
問題は、AddObject()
機能しますが、SaveChanges() が失敗することです。Document インスタンス、Client 参照、および Client の PostCode 参照を隅々まで調べましたが、すべての値が存在します (これは、遅延読み込みが適切に機能していることも証明しています) が、保存は行われません。
私が見逃した可能性のあるアイデアを探しています..
.net - EntityFrameworkv1とキャッシュされたPOCOの更新
.NET3.5アプリケーションでEFv1とVelocityキャッシュを使用しています。キャッシュされたオブジェクトは、データベース内のエンティティモデルの表現です。そこで、POCOアダプターでEFv1を使用することにしました。したがって、キャッシュからオブジェクトを読み取り、存在しない場合はデータベースからオブジェクトを読み取り、すぐにキャッシュするエンティティアクセスレイヤーがあります。更新が必要なユースケースでは、ダーティPOCOをデータベースで更新する必要があります。ここでは、変更を追跡するバッキングオブジェクトが必要なため、ここでPOCOアダプターとプロキシを直接使用することはできません。フレームワークからアダプタオブジェクトをハイドレイトしたことがないため、変更の検出は行われません。私が見る最も簡単なオプションは次のとおりです。
- 更新する前にエンティティを読んでください。POCOからアダプタ値を設定します。変化検出を軌道に乗せましょう。これは、多くの関連エンティティを指定するとコストがかかる可能性があるすべての更新の前に選択を行います。
- 新しいエンティティオブジェクトを作成します。POCOからエンティティキーとプロパティを設定します。変更内容を保存。これにより、プロパティ/関連エンティティが変更されていない場合でも、不要な書き込みが行われます。
問題の説明で明確になったことを願っています。提案してください。
entity-framework - Entity Framework 4.1、POCO、およびリポジトリパターンを使用してアプリケーションを設計する方法
Enterprise Library 4.1を使用して、ASP.NET MVCでアプリケーションを設計しようとしています。EntityFrameworkPOCOテンプレートを追加し、生成されたエンティティを別の「エンティティ」プロジェクトに移動しました。ただし、このアプリケーションを設計するための最良の方法を決定するのに苦労しています。ObjectContextはEDMXファイルと同じプロジェクトにあるべきだと思います。ただし、ObjectContextはPOCOにアクセスできる必要があります。リポジトリを作成する場合、POCOとObjectContextの両方にアクセスできる必要があります。リポジトリロジックとPOCOは同じプロジェクトにあるべきだと思いますが、「POCOsプロジェクト」と「EDMXプロジェクト」の間に循環参照があるため、それは機能しません。ObjectContextを「POCOsプロジェクト」に入れたくない
私は例を探し回っていますが、私が見つけたほとんどの例は、ベストプラクティスを使用せずに例をまとめています。多分私はこれを複雑にしすぎています。私は、アプリケーションを最適に設計する方法を理解しようとしています。