問題タブ [entity-framework-5]
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 - 保存する保留中の変更があるかどうかを確認します
Entity Framework で、エンティティ コンテキストに保存されていない変更があるかどうかを確認する方法はありますか?
entity-framework - EFコードファースト:関連データ(親-子-孫)をロードする方法は?
私はこのエンティティを持っています:
このエンティティには、親->子->孫の3つのレベルがあります。関連するすべての子(レベル2)と、子ごとに、関連する孫(レベル3)がある場合は、親(レベル1)をロードするにはどうすればよいですか?助けてくれてありがとう。
c# - クラスライブラリでEntityFrameworkの移行を有効にできません
EF 5に乗り込み、コードファースト移行ツールを使用していますが、移行を有効にしようとするとエラーが発生するようです。
Enable-Migrations
パッケージマネージャーコンソールに入力すると、
現在のプロジェクトには、DbContextから派生したクラスが見つかりません。
生成されたConfigurationクラスを編集して、移行を有効にするコンテキストを指定します。
プロジェクトMyApp.MvcUIに対してコードファーストマイグレーションが有効になっています。
次に、MvcUIプロジェクトにMigrationsフォルダーとConfigurationクラスを作成します。つまり、私のDbContextは、MyApp.Domainというクラスライブラリプロジェクトに存在します。それはそのプロジェクトですべてを実行しているはずであり、私のDbContextを見つけるのに問題はないはずです。
c# - EF5 Beta1 DateTime の比較
ランダムなティック数を使用して日付のテスト データを生成していますが、入力した日付は返された日付よりも精度が高いようです。これはEF5の問題ですか、それともDateTimeとDateTime2の列タイプに関係していますか?
例えば
私の生成時間からの目盛り: 634074312268196992
EF を介して保存/取得された時点からのティック: 634074312268200000
entity-framework - 「Update-Database」という用語は、コマンドレットの名前として認識されません
私はEF5 beta1を使用していますが、以前は「Update-Database」を実行できました。Visual Studio をシャットダウンしたので、実行できません。次のエラーが表示されます。
「Update-Database」という用語は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認してから再試行してください。行:1 文字:16 + Update-Database <<<< -verbose + CategoryInfo : ObjectNotFound: (Update-Database:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
EF5b1 を再インストールしようとしましたが、成功しましたが (既にインストールされています)、'Update-Database' はまだ機能しません。
誰でも助けることができますか?
entity-framework - コレクション/モデルは保存後に問題なく表示されますが、エンティティをロードするときにデータが取り戻されません。私は何を間違っていますか?
私のモデルのソースコードは次のとおりです。
そして、ここに私のエンティティクラスがあります:
最後に、テスト コンソール アプリケーションで実行するコード:
モデルが保存されると (CreateUser)、モデルをナビゲートすることができ、すべてが完璧に見えました。
データを取り戻そうとすると問題が発生します。
私の変数:
a -- 電子メール アドレスに移動すると、0 レコードが表示されます。
b -- これもコレクション内のレコードが 0 であることを示しています。
c -- 電子メール アドレスに移動すると、0 レコードが表示されます。
d -- ここでメール アドレスを取得できます (ただし、モデルをナビゲートすることによってではありません)
entity-framework - (FluentAPIを使用して)モデルを修正して、User.FriendCollectionに別のユーザーを割り当てる方法を教えてもらえますか?
私はCodeFirstを初めて使用し、2人のユーザーが友達コレクションにお互いを持つことができるように友達コレクションを作成しようとしています。
これが私のユーザークラスです:
これが私の友達クラスです:
これが私のエンティティクラスです:
そして、これが私のコンソールコードであり、理想的には私が達成したいことです。
SaveChangesは、FriendクラスにUserオブジェクトを入力しようとすると、次のようなエラーをスローします。
多重度制約に違反しました。リレーションシップ「Entities.Friend_User」のロール「Friend_User_Target」の多重度は1または0..1です。
このようにUserIDに割り当てる場合:
u1.FriendCollection.Add(new Friend {UserID = u2.ID});
これにより、エンティティを保存できますが、正しくは保存できません。
コードをステップスルーすると、問題を特定できます。これが私が見つけたものです。
これで、Friend.Userを呼び出し元のUserに割り当てた場合、エラーをスローせずに前の例とSaveChanges()に戻ることができます。例えば:
しかし、別のユーザーを割り当てようとすると、エラーが発生します。例えば:
私は得る:
多重度制約に違反しました。リレーションシップ「Entities.Friend_User」のロール「Friend_User_Target」の多重度は1または0..1です。
(FluentAPIを使用して)モデルを修正して、User.FriendCollectionに別のユーザーを割り当てる方法を教えてもらえますか?
sql-server - Entity Framework を使用して SQL Server で計算列の値を実行する方法
ID 列を使用し、pk を生成することに慣れています。ID 列のスコープを設定したり、外部キー内で一意になるように計算したりする方法はありますか?
たとえば、ID 列を使用すると、テーブルは次のようになります。
次のようなことを達成したい場合はどうすればよいですか。
EF では、id や計算など、データベースで生成された列の値を使用できることを知っています。私の質問は、このような計算列をどのように達成できるでしょうか?
ユーザーが持っている最大の WidgetId を見つけて 1 ずつインクリメントすることで、アプリケーションで実行できることがわかりました。しかし、これは正しい方法ではないように感じます。
トリガーを使用してこれを行うことも可能かもしれないと思いますが、トリガーを から db に追加するDbContext
と、RDBMS に依存することになりますよね?
EF が使用しているバックエンドへの依存を少なくする、より良い方法はありますか?
アップデート
より明確にするために、上記のモデルでは、Widget と User の間に意図的に識別関係があります。UserId は User テーブルの主キーであり、Widget の PK の一部として User への FK を持つことで、Widget がユーザー間で共有されることはありません。ユーザーが削除されると、すべてのウィジェットが一緒に削除されます。WidgetId だけでウィジェットをクエリしても意味がありません。特定のウィジェットを照会するには、UserId パラメーターと WidgetId パラメーターの両方が必要です。
Evans DDD で、集約内の非ルート エンティティ ID は集約内で一意である必要があるだけであると読んだことを思い出したので、これを調査しています。上記は、この場合の例です。
ルート以外の ENTITIES にはローカル ID がありますが、その ID は AGGREGATE 内でのみ識別可能である必要があります。これは、外部オブジェクトがルート ENTITY のコンテキストからそれを見ることができないためです。(ドメイン駆動設計、エヴァンス)
更新 2
Gorgan の回答の後、ウィジェット ファクトリ クラスに次のようなものを実装しました。これは、上記の望ましい結果を達成するための正しいアプローチですか?
ウィジェット
この用語を偽装すべきではなかったと思います。実際のエンティティは WorkPlace です。毎年、市税還付申請書と共に旅程表を提出しなければならないので、その年のどこで働いているかを追跡するアプリを作成しています。完了したら、クラウドに公開して、他の人が無料で使用できるようにする予定です。しかしもちろん、私は彼らの WorkPlace を私のものから完全に分離したいと考えています。
ユーザーは、匿名の識別を使用してすべての訪問者に対して自動的に作成されます / Request.AnonymousID
(後で登録機能がありますが、デモを試す必要はありません)。Web アプリには、/work-places/1、/work-places/2 などの安静な URL があります。すべての要求にはユーザーが含まれていることが保証されているため、ユーザー ID を URL で識別する必要はありません。Request.AnonymousID
に何もないときからユーザーを識別できますUser.Identity.Name
。
WorkPlaceId が ID 列である場合、コントローラー アクションは、表示する前にユーザーが職場を所有していることを確認する必要があります。そうしないと、URL をハッキングして、すべてのユーザーがシステムに設定したすべての WorkPlace を確認できます。WorkPlaceId をユーザーに対してのみ一意にすることで、心配する必要はありません。URL /work-places/1 は、2 人の異なるユーザーにまったく異なるデータを表示します。
c# - null値を検索するとEFのLINQが失敗しますか?
次のコードがあります。
story.StartSegment は実際には null であるため、この単体テストは失敗しますが、開始セグメントが nullではないストーリーを明示的に検索する FirstOrDefault ラムダ式を考えると、これは意味がないと思います。
誰でも私を助けることができますか?
c# - CodeFirstとEntityFramework5での列挙型の使用
印象を確認しようとしています。EF5+CodeFirstの列挙型は、プロパティタイプとしてそれらを使用するクラスと同じ名前空間内で宣言された場合にのみサポートされるようです。
誰かがそれを確認できますか?これについてはウェブ上で何も見つかりませんでした...