問題タブ [entity-framework-6]

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.

0 投票する
3 に答える
1318 参照

c# - プロパティ タイプが変更されたときに識別子を更新しない

抽象型のプロパティを持つエンティティがあります。これにより、階層ごとのテーブルの継承を使用する 1 対 1 の関係が作成されます。すべてが正しく機能しているようです。

Item を作成し、BaseプロパティをConcreteOne;に設定できます。すべてが正しく保存されます。ただし、更新しようとするBaseConcreteTwo、EFBaseはデータベース内のレコードを新しいユーザー値で更新しますが、型の識別子は更新されません。したがって、 の余分なデータConcreteTwoは永続化されますが、ディスクリミネーターはまだConcreteOne.

以下は、問題を明らかにする簡単な例です

変更が保存されると、EF は次の SQL を生成します。

[Discriminator] = 'ConcreteTwo'したがって、ほぼ正しいですが、更新ステートメントで確認できると思います。私の期待は根拠のないものですか、それとも何か間違ったことをしていますか?

テストとして、table-per-type を使用してみましたが、予想どおり、エントリがテーブルから削除され、ConcreteOneテーブルに追加されました。ConcreteTwoそれでうまくいきますが、私の実際のアプリケーションには少なくとも 7 つのサブタイプがあり、Baseプロパティを取得するための SQL ステートメントは非常に厄介です。可能であれば、TPHを使用してこれを実現したいと思います。

更新: 問題が EF5 と EF6 に存在することを確認しました。

0 投票する
1 に答える
468 参照

c# - .Where(i => !i.IsDeleted) は SQL に変換されませんが、.Where(i => i.IsDeleted.Equals(false)) は変換されます

私は ASP.NET MVC 4 と Entity Framework 6 (Code First) を使用していますが、望ましくない/好きではない奇妙な動作があります:ブール型のプロパティを持つ
エンティティ クラスがあり、最初の 25 枚の画像を取得したいと考えています。これらは削除されないため、次のコードを使用しました。ImagesIsDeleted

これは非常に遅かったので、もう少し詳しく調査したところ、Where(i => !i.IsDeleted)すでにDBクエリがトリガーされ、すべての画像がロードされ(そして解析=>遅く)、チェックが「コード内」で行われることがわかりました。次に、Where(i => i.IsDeleted.Equals(false))どれがうまく機能するかを試してみましたが、SQL経由でチェックが行われました。

最初の構文の方がはるかに好きなので、なぜそうなのか、またはこの問題を回避するにはどうすればよいですか?
これはおそらくEF 6ベータ版のバグですか、それともすべてのEFバージョンで発生しますか?

更新:
問題はキャストですIEnumerable<Image>Whereコードの同じ行ではありませんでしたが、簡単にするためにここで変更しました)が、これを使用して -keys を.OrderBy(...).ThenBy(...)使用していますが、Func<T, TKey>返さIOrderedEnumerableれませんIOrderedQueryable...

更新 2:キー を使用して解決Expression<Func<T, TKey>>...

0 投票する
1 に答える
403 参照

c# - OrderBy(関数) は SQL に変換できません

メソッドに提供する動的ソートロジック(こちらを参照)を実装しました。Expression<Func<T, IComperable>>OrderBy

今、EFが実際の型にIComperable変換できないという問題があります。Func<T, IComperable>

型 'System.Int32' を型 'System.IComparable' にキャストできません。LINQ to Entities は、EDM プリミティブ型または列挙型のキャストのみをサポートします。

System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.ValidateAndAdjustCastTypes(TypeUsage toType, TypeUsage fromType, Type toClrType, Type fromClrType)

これを解決する方法はありますか?

現時点で見つけた唯一の方法はFunc<>、 を実際の型として「実装」し、この型を の隣に保存して、リフレクションを介してFunc<>呼び出すことです。OrderBy

しかし、それは私には非常に醜い(そして遅い?)ようで、現在の(残念ながらLINQ to objectsの場合のみ)ソリューションほど使いにくいです...

更新:この問題は、
戻ったときintまたはboolでのみ発生するようです...Func<T, IComperable>string

0 投票する
1 に答える
221 参照

c# - Entityframework RC1 - 内部に作成された MetadataItem.Annotations - 代替案?

特定の型を参照している PropertyInfos のリストを取得するために、EF Beta1 で次のメソッドを使用しています。

ただし、最近リリースされた RC1 (を参照) では、System.Data.Entity.Core.Metadata.Edm.MetadataItem のAnnotations -Property が内部化されました。

私の簡単な回避策は、リフレクションを使用して内部プロパティにアクセスすることですが、リフレクション ハックなしで指定された NavigationProperty の PropertyInfo を取得する他の解決策があるかどうか疑問に思っています。

0 投票する
1 に答える
807 参照

entity-framework - webapi が関連付けられたテーブルからすべてのデータを返さないようにする

メンバーが持つ各会社のレコードを持つ MemberCompany というテーブルがあります。モデルは以下。メンバー ID を渡す webapi メソッドを介してクエリを実行すると、デバッグ モードでそのメンバーの 1 つの会社が返されることがわかりますが、ブラウザーで実行すると、メンバーのリスト全体も返されることがわかります。2 つの参照テーブルなしで membercompany レコードのコレクションを返すことは可能ですか? これら 2 つのテーブルを含めるように最初のコードをコメントアウトしましたが、まだ応答に含まれているようです。

WebAPI

0 投票する
1 に答える
126 参照

c# - EF6 ベータ 1 移行のバグの可能性があります。Codefirst 移行のデッドロック

EF データベースが削除され、モデルにいくつかの変更が加えられました。データベースを再作成したい。しかし、ef は私にいくつかの奇妙なメッセージを表示します。現在のモデルに一致するようにデータベースを更新できないため、最初に保留中のモデルの変更を Code-First 移行に書き込む必要があるとのことでした。しかし、保留中のモデルの変更を Code-First 移行に書き込もうとすると、保留中の移行をデータベースに適用する必要があると言われました。

ここに画像の説明を入力

-Sriptオプションも試しましたUpdate-Databaseが、同じ結果が得られます。

ここに画像の説明を入力

私は何をすべきか?保留中の変更をモデルに戻しますか?

0 投票する
3 に答える
5195 参照

entity-framework - アセンブリ 'EntityFramework' から型 'System.Data.Entity.DbSetExtensions' を読み込めませんでした

entityframework 6.0.0-beta1 から 6.0.0-rc1 に更新され、MVC5 アプリケーションにログインすると、次のエラーが表示されます

私のcsprojには次の参照があります

web.config

これは以前は機能していましたが、新しいバージョンの System.Data.Entity.Design dll が必要ですか? またはweb.configでアセンブリのバージョンを変更しますか?

編集: Identity Framework 関係者は更新された dll をリリースして一致させる必要があるようですね?

0 投票する
1 に答える
2291 参照

entity-framework-6 - Microsoft.AspNet.Identity を rc1 にアップグレードした後、IdentityStoreManager が見つかりませんでした

Microsoft.AspNet.Identity.Core を 1.0.0-rc1 にアップグレードした後、Visual Studio 2013 の既定の MVC5 テンプレートによって生成される AccountController.cs および AppModel.cs クラスにいくつかのエラーが表示されます。

重大な変更を解決する方法を説明するリリース ノートはありますか?