2016-04-23 6 views
1

私はこの種のシステムを使用してSQLデータベースを管理する初心者です。レコードを挿入してからクエリを実行しようとしています。私はテーブル "タイプ"と "原点"の関連表にレコードを追加しています。これは "多対多"に関連しています。Entity Framework 5でレコードを追加するC#

type _type_ = dataBase.type.FirstOrDefault(x => x.name == "photo"); 
dataBase.origin.FirstOrDefault(x => x.name == "El Pais").type.Add(_type_); 
var vari = from origin in dataBase.origin 
      from type in origin.type 
      select new 
      { 
       Origin = origin.name, 
       Type = type.name 
      }; 
foreach (var object in vari) 
    Console.WriteLine(object.Origin + " - " + objeto.Type); 

私は私がちょうど挿入した新しいレコードを取得しない: の事は、私はこのコードを使用している場合です。

しかし、私はちょうどこのような "dataBase.SaveChanges()"、を使用する場合:

type _type_ = dataBase.type.FirstOrDefault(x => x.name == "photo"); 
dataBase.origin.FirstOrDefault(x => x.name == "El Pais").type.Add(_type_); 
dataBase.SaveChanges(); 
var vari = from origin in dataBase.origin 
      from type in origin.type 
      select new 
      { 
       Origin = origin.name, 
       Type = type.name 
      }; 
foreach (var object in vari) 
    Console.WriteLine(object.Origin + " - " + objeto.Type); 

をそれは働きます! これを読んだことがあります.SaveChanges() "このコンテキストで行われたすべての変更を基になるデータベースに保存します"

私は混乱しています。エンティティフレームワークを使用する利点の1つは、指向のモデルであり、クエリを作成することができます。これにより、ディスク上のデータベースにアクセスするよりもパフォーマンスが向上します。

しかし、私が見るところでは、そのモデルを変更するたびに、「基本データベースにすべての変更を保存する」必要があります。

だからどこに利点がありますか?使い方? ありがとう!

は「私はEntity Frameworkのを使用することの一つの利点は、あなたがそのオブジェクト指向モデルの変更を書いたことだと思った、とあなたはになりますされ、それにクエリを行うことができます:)

答えて

0

この文は真ではありませんディスク上のデータベースにアクセスするよりも高速なパフォーマンスを実現します。 EFの

利点がある:それはT-SQL、SPROC管理のあなたを軽減

  1. データモデリングを軽減します。 (あなたのオブジェクトモデルはデータモデルとして使用できます)
  2. これは、データレイヤーの単体テスト能力を提供します。 (ADO.NETを使用すると不可能に近い)
  3. 実際には、特定のDBサーバーにコードに依存しないコードを作成します。 (MS SQL、Oracleなど)
  4. すべてのコードはファーストクラスのC#です。魔法のSPROC名、インラインSQLなどはありません
  5. 以上..それ以上のスペースが必要です。

し、あなたの目的は、データベースにレコードを挿入し、それに対するクエリのであれば、それでのSaveChangesを行うには大丈夫です..それは、レコードがコミットされることを保証し、また、主キーと他の州を割り当てエンティティに対するマネージャのトラッキング設定。

+0

ありがとう、ありがとう:) – Marc

関連する問題