タグ付けされた質問 「entity-framework」

ADO.NET Entity Framework、.NET Framework用のObject-Relational-Mapping(ORM)ツールに関する質問。該当する場合は、バージョン固有のタグを追加してください。Entity-Framework-coreの質問には、このタグを使用しないでください。代わりにentity-framework-coreを使用してください。

4
エンティティフレームワークlinqクエリInclude()複数の子エンティティ
これは本当に基本的な質問かもしれませんが、3レベル(またはそれ以上)にまたがるクエリを作成するときに複数の子エンティティを含めるための良い方法は何ですか? つまり、私は4つのテーブルを持っている:Company、Employee、Employee_CarおよびEmployee_Country 会社は従業員と1:mの関係があります。 従業員は、Employee_CarとEmployee_Countryの両方と1:mの関係にあります。 4つのテーブルすべてからデータを返すクエリを記述したい場合は、現在次のように記述しています。 Company company = context.Companies .Include("Employee.Employee_Car") .Include("Employee.Employee_Country") .FirstOrDefault(c => c.Id == companyID); よりエレガントな方法が必要です!これは長く巻き込まれ、恐ろしいSQLを生成します VS 2010でEF4を使用しています

11
空のクエリの場合の最大戻り値
私はこのクエリを持っています: int maxShoeSize = Workers .Where(x => x.CompanyId == 8) .Max(x => x.ShoeSize); maxShoeSize会社8に労働者がまったくいない場合はどうなりますか? 更新: 例外ではなく0を取得するためにクエリを変更するにはどうすればよいですか?

7
Entity Frameworkはロールバックし、不適切な移行を削除します
手動での移行と更新を伴うC#のプロジェクトにEF 6.0を使用しています。データベースに約5つの移行がありますが、最後の移行は不適切であり、望ましくないことに気付きました。以前の移行にロールバックできることはわかっていますが、新しい(修正された)移行を追加してUpdate-Databaseを実行すると、不正な移行も適用されます。 以前の移行にロールバックして、移行が不適切なファイルを削除しようとしました。しかし、その後、新しい移行を追加しようとすると、移行ファイルが破損しているため、データベースの更新時にエラーが発生します(より具体的には、コードの最初の行でテーブルAをBに名前変更し、次の行です)。EFは名前A-多分それはいくつかのEFバグです)。 私が実行できるクエリはありますか?これは、EFに「最後の移行が存在しなかったように忘れて、それが悪かった」のようなものを伝えるでしょうか?Remove-Migrationのようなもの。 Edit1 自分に適したソリューションを見つけました。モデルを良好な状態に変更して実行しAdd-Migration TheBadMigration -Forceます。これにより、適用されていない最後のマイグレーションが再足場されます。 とにかく、これはまだ元の質問に完全には答えていません。データベースを不正な移行に更新した場合、不良な移行を除いて、新しい移行をロールバックして作成する方法が見つかりませんでした。 ありがとう

9
サービスは常にDTOを返す必要がありますか、それともドメインモデルも返すことができますか
大規模なアプリケーションを(再)設計しています。DDDに基づく多層アーキテクチャを使用しています。 データレイヤー(リポジトリの実装)、ドメインレイヤー(ドメインモデルとインターフェイスの定義-リポジトリ、サービス、作業単位)、サービスレイヤー(サービスの実装)を備えたMVCがあります。これまでのところ、すべてのレイヤーでドメインモデル(主にエンティティ)を使用し、ビューモデルとしてのみDTOを使用しています(コントローラーでは、サービスはドメインモデルを返し、コントローラーはビューに渡されるビューモデルを作成します)。 DTOの使用、使用、マッピング、および受け渡しに関する無数の記事を読んだことがあります。明確な答えはないことを理解していますが、ドメインモデルをサービスからコントローラーに返すかどうかはわかりません。ドメインモデルを返しても、コントローラーは常にビュー固有のビューモデルを作成するため、ドメインモデルはビューに渡されません。この場合、正当なようです。一方、ドメインモデルがビジネスレイヤー(サービスレイヤー)を離れると、適切に感じられません。サービスはドメインで定義されていないデータオブジェクトを返す必要がある場合があります。その場合、マップされていないドメインに新しいオブジェクトを追加するか、POCOオブジェクトを作成する必要があります(一部のサービスはドメインモデルを返すため、これは醜いです。効果的にDTOを返します)。 問題は、ビューモデルを厳密に使用する場合、ドメインモデルをコントローラーに返すことは問題ありませんか、それとも、サービスレイヤーとの通信に常にDTOを使用する必要がありますか?その場合、必要なサービスに基づいてドメインモデルを調整しても問題ありませんか?(率直に言って、私はそうは思いません。サービスはドメインが持っているものを消費する必要があるからです。)厳密にDTOに固執する必要がある場合、サービスレイヤーで定義する必要がありますか?(私はそう思います。)DTOを使用する必要があることは明らかです(たとえば、サービスが多くのビジネスロジックを実行して新しいオブジェクトを作成する場合)。ドメインモデルのみを使用する必要がある場合もあります(たとえば、Membershipサービスが貧血のUser( s)-ドメインモデルと同じDTOを作成することはあまり意味がないようです)-しかし、私は一貫性と優れた実践を好みます。 記事ドメインvs DTO vs ViewModel-それらをいつどのように使用するか?(および他のいくつかの記事)は私の問題と非常に似ていますが、この質問には答えません。記事EFのリポジトリパターンでDTOを実装する必要がありますか?も同様ですが、DDDは扱いません。 免責事項:存在していてファンシーであるためにデザインパターンを使用するつもりはありません。一方、アプリケーション全体の設計に役立ち、分離に役立つため、優れたデザインパターンとプラクティスを使用したいと思います。特定のパターンを使用するのは難しいとしても、少なくとも現時点では「必要」ではありません。 いつもありがとうございます。

17
「ItemsSourceを使用する前に、Itemsコレクションを空にする必要があります。」
この古いATC Avalonチームの記事「カスタムビューを作成する方法」で説明されているように、WrapPanelのようなスタイルのWPFリストビューに表示する画像を取得しようとしています。 ListViewにLINQ-to-EntitiesでクエリされたADO.NET Entity Frameworkオブジェクトのコレクションを設定しようとすると、次の例外が発生します。 例外 ItemsSourceを使用する前に、項目コレクションを空にする必要があります。 私のコード… Visual Basic Private Sub Window1_Loaded(...) Handles MyBase.Loaded ListViewImages.ItemsSource = From g In db.Graphic _ Order By g.DateAdded Ascending _ Select g End Sub XAML <ListView Name="ListViewImages" SelectionMode="Single" ItemsSource="{Binding}"> <local:ImageView /> </ListView> その行にブレークポイントを設定しました。 ListViewImages.ItemsSourceあるNothingだけでLINQの割り当ての前に。

14
タイプ 'SubSonic.Schema .DatabaseColumn'のオブジェクトのシリアル化中に循環参照が検出されました。
単純なJSONを返そうとしていますが、以下の問題があります。 public JsonResult GetEventData() { var data = Event.Find(x => x.ID != 0); return Json(data); } この質問のタイトルに示されているように、例外としてHTTP 500を取得します。私も試しました var data = Event.All().ToList() 同じ問題が発生しました。 これはバグですか、それとも私の実装ですか?

11
指定された名前付き接続が構成に見つからないか、EntityClientプロバイダーでの使用を意図していないか、無効です
1つのエンティティフレームワークオブジェクトがあり、プロジェクトにconnectionstring 追加するapp.configと、connectionstringセクションに追加されますが、新規に作成entitycontextしてこれを使用したい場合connectionstring、このエラーが表示されます

11
Entity Framework 6を​​使用した人々のユニットテストはどうですか?
私はユニットテストとTDD全般から始めたばかりです。以前は手を出していたのですが、ワークフローに追加して、より優れたソフトウェアを作成することにしました。 昨日そのようなことを含めた質問をしましたが、それ自体が質問のようです。コントローラーからビジネスロジックを抽象化し、EF6を使用して特定のモデルとデータインタラクションにマッピングするために使用するサービスクラスの実装を開始するために座った。 問題は、リポジトリでEFを抽象化したくなかったため(それでも特定のクエリなどのサービスの外で利用可能になるため)、自分のサービスをテストしたい(EFコンテキストが使用される)ために、すでに自分自身をロードブロッキングしています。 。 ここで私は問題だと思いますが、これを行う意味はありますか?もしそうなら、IQueryableによって引き起こされたリークの多い抽象化と、メモリ内で作業する際のLinqプロバイダーの違いのために、ユニットテストの主題に関するLadislav Mrnkaによる多くの優れた投稿が簡単ではないことを踏まえて、人々はどうやってそれを実際にやっていますか?特定のデータベースに並置された実装。 テストしたいコードは非常に単純なようです。(これは、私が何をしているかを理解するためのダミーコードです。TDDを使用して作成を推進したいと思います) 環境 public interface IContext { IDbSet<Product> Products { get; set; } IDbSet<Category> Categories { get; set; } int SaveChanges(); } public class DataContext : DbContext, IContext { public IDbSet<Product> Products { get; set; } public IDbSet<Category> Categories { get; set; } public DataContext(string …

5
エンティティフレームワーク-最初からやり直す-すべての移行を元に戻す/ロールバックする
何らかの理由で、私の移行はごちゃごちゃした/破損している/何であれようです。やり直したいところです。すべての移行を完全に元に戻し、履歴を消去し、移行コードを削除する方法があるので、元の状態に戻しますか? 例)PM> Disable-MigrationsまたはRollback-Migrations 元の移行ステップ(つまり、InitialSchemaターゲットのようなもの)に "更新"したくないので、それを見つけることができません。

8
オブジェクト 'DF __ *'は列 '*'に依存しています-intをdoubleに変更しています
基本的に、EFデータベースに次のプロパティを持つテーブルを取得しました。 public int Id { get; set; } public string Title { get; set; } public string Description { get; set; } public string Image { get; set; } public string WatchUrl { get; set; } public int Year { get; set; } public string Source { get; set; } …

12
エンティティオブジェクトは、IEntityChangeTrackerの複数のインスタンスから参照できません。Entity Framework 4.1のエンティティに関連オブジェクトを追加する間
Cityへの参照がある従業員の詳細を保存しようとしています。しかし、検証された連絡先を保存しようとするたびに、例外「ADO.Net Entity FrameworkエンティティオブジェクトはIEntityChangeTrackerの複数のインスタンスから参照できません」が発生します。 たくさんの記事を読みましたが、それでも何をすべきかについて正確なアイデアが得られていません...保存ボタンのクリックコードを以下に示します protected void Button1_Click(object sender, EventArgs e) { EmployeeService es = new EmployeeService(); CityService cs = new CityService(); DateTime dt = new DateTime(2008, 12, 12); Payroll.Entities.Employee e1 = new Payroll.Entities.Employee(); Payroll.Entities.City city1 = cs.SelectCity(Convert.ToInt64(cmbCity.SelectedItem.Value)); e1.Name = "Archana"; e1.Title = "aaaa"; e1.BirthDate = dt; e1.Gender = "F"; e1.HireDate …

18
エンティティフレームワーク:主キーのないテーブル
を使用して新しいアプリを構築したい既存のDBがあります EF4.0 一部のテーブルには主キーが定義されていないため、新しいエンティティデータモデルを作成すると、次のメッセージが表示されます。 The table/view TABLE_NAME does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity, you will need to review your schema, add the correct keys, and uncomment it. それらを使用してデータを変更する場合、それらのテーブルに必ずPKを追加する必要がありますか、それとも回避するための回避策はありますか?


6
タイプの定数値を作成できませんこのコンテキストでは、プリミティブタイプまたは列挙タイプのみがサポートされています
以下のクエリでこのエラーが発生します タイプの定数値を作成できませんAPI.Models.PersonProtocol。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています ppCombined以下は、2つのリストの連結によって構成されるのIEnumerableオブジェクトです。PersonProtocolTypePersonProtocol なぜこれが失敗するのですか?私たちは、LINQを使用することはできませんJOIN内部の句をSELECTしますかJOIN? var persons = db.Favorites .Where(x => x.userId == userId) .Join(db.Person, x => x.personId, y => y.personId, (x, y) => new PersonDTO { personId = y.personId, addressId = y.addressId, favoriteId = x.favoriteId, personProtocol = (ICollection<PersonProtocol>) ppCombined .Where(a => a.personId == x.personId) .Select( b => new PersonProtocol() { …

6
サポートされていないキーワード:Entity Framework Contextを初期化する「データソース」
エンティティフレームワークオブジェクトコンテキストを初期化しています。これにより、キーワードサポートされていないエラーが発生します。 metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Workspace\vs\Leftouch\Leftouch.Web\Data\Leftouch.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;App=EntityFramework" 動作していたweb.configから直接接続文字列を取得し、(動的に設定した)ファイルへのパスのみを変更しました。デフォルト値を使用する代わりに、この接続文字列を明示的に使用しました。このエラーの原因は何ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.