EntityFrameworkチュートリアルの詳細

3332 ワード

EntityFrameworkチュートリアル詳細アプリケーションがデータベースに対してCRUDを実行する場合、entity framework方式では、実際にはDbContextに対する操作であり、DbContextはEFのエントリであり、DbContextは対応するメッセージ(CRUD)を取得した後、ORMのMappingによってオブジェクトOをデータライブラリの関係Rにマッピングする.EntityFrameworkでデータを修正、削除、追加するには、操作するデータを先に「コンテキスト」に追加し、コンテキストの状態を変更し、最後にSaveChangeというメソッドを呼び出す必要があります.クエリーはLinq文でクエリーするかlambda式でクエリーできます.
オブジェクトを追加
DbEntity db = new DbEntity(); //      ,  ,             (         ),     ,           NULL(      ) 
var user = new User { Name = "bomo", Age = 21, Gender = "male" }; 
db.User.Add(user); 
db.SaveChanges();
var entity = Mapper.Map(model);
entity.ServerId = DbHepler.GenerateNewId();
db.SysServers.Add(entity);
db.SaveChanges();

オブジェクトを削除、オブジェクトのみが必要なプライマリ・キーを削除
DbEntity db = new DbEntity();
 //       ,       5  
 var user = new User {Id = 5};

//            
 db.User.Attach(user);
//   :
 db.User.Remove(user);
//   :            
//db.Entry(user).State = EntityState.Deleted;
db.SaveChanges();

var entity = db.SysServers.FirstOrDefault(p => p.ServerId == serverId);
if (entity == null)
    return GetErrorMsgByErrCode(20101005);

db.SysServers.Remove(entity);
db.SaveChanges();

オブジェクトの変更
方法1
DbEntity db = new DbEntity();
 //         ,  :           ,         NULL      
 var user = new User
{
       Id = 5,
       Name = "bomo",
       Age = 21,
       Gender = "male"
 };
//            
db.User.Attach(user);
//          Modified
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
var entity = Mapper.Map(model);
db.SysServers.Attach(entity);
db.Entry(entity).State = EntityState.Modified;
db.SaveChanges();

方法2:方法1では、毎回すべてのフィールドを変更する必要があります.効率が低く、面倒です.以下、一部のフィールドの変更について説明します.
DbEntity db = new DbEntity();
//         ,  :           ,         NULL      
var user = new User
{
    Id = 5,
    Name = "bomo",
    Age = 21
};
//            
db.User.Attach(user);

//   user     ,       
var setEntry = ((IObjectContextAdapter) db).ObjectContext.ObjectStateManager.GetObjectStateEntry(user);
//      Name   Age  
setEntry.SetModifiedProperty("Name");
setEntry.SetModifiedProperty("Age");

db.SaveChanges();

トランザクションの使用
トランザクションを使用するのは簡単です.必要な操作をTransactionScopeに入れて、最後にコミットします.
DbEntity db = new DbEntity();
using (var scope = new TransactionScope())
{
//      
var user1 = new User
{
    Name = "bomo",
    Age = 21,
    Gender = "male"
};
db.User.Add(user1);
db.SaveChanges();

var user2 = new User
{
    Name = "toroto",
    Age = 20,
    Gender = "female"
};
db.User.Add(user2);
db.SaveChanges();

//    
scope.Complete();
}

クエリー:クエリーはLinQクエリー
DbEntity db = new DbEntity();
//      
var user = db.User.Where(u => u.Name == "bomo").Select(u => new {Id = u.Id, Name = u.Name, Age = u.Age}).FirstOrDefault();
//     FirstOrDefault, First, Single, ToList, ToArray              

拡張読書
  • Entity Frameworkチュートリアル(第2版)
  • AutoMapper使用法
  • AutoMapper
  • EFの知識と経験を知っておく必要があります