EntityFrameworkチュートリアルの詳細
3332 ワード
EntityFrameworkチュートリアル詳細アプリケーションがデータベースに対してCRUDを実行する場合、entity framework方式では、実際にはDbContextに対する操作であり、DbContextはEFのエントリであり、DbContextは対応するメッセージ(CRUD)を取得した後、ORMのMappingによってオブジェクトOをデータライブラリの関係Rにマッピングする.EntityFrameworkでデータを修正、削除、追加するには、操作するデータを先に「コンテキスト」に追加し、コンテキストの状態を変更し、最後にSaveChangeというメソッドを呼び出す必要があります.クエリーはLinq文でクエリーするかlambda式でクエリーできます.
オブジェクトを追加
オブジェクトを削除、オブジェクトのみが必要なプライマリ・キーを削除
オブジェクトの変更
方法1
方法2:方法1では、毎回すべてのフィールドを変更する必要があります.効率が低く、面倒です.以下、一部のフィールドの変更について説明します.
トランザクションの使用
トランザクションを使用するのは簡単です.必要な操作をTransactionScopeに入れて、最後にコミットします.
クエリー:クエリーはLinQクエリー
拡張読書 Entity Frameworkチュートリアル(第2版) AutoMapper使用法 AutoMapper EFの知識と経験を知っておく必要があります
オブジェクトを追加
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
拡張読書