[共有]極めて簡単なBaseEntity CRUD方法
前言
試してみたNet、dapper、ef、Repository倉庫、さらには、通常のCRUD操作のためにジェネレータツールを自分で書いたこともあります.
日常的な操作が不便な点:
BaseEntityは極めて簡単なCodeFirst開発方式であり、特に単表または多表CRUDに対して、継承によって各エンティティクラスの重複属性(作成時間、IDなどのフィールド)、ソフトウェア削除などの機能を節約し、crud操作を行う際に倉庫の使用を常に考慮する必要はない.
この論文では、BaseEntityの極めてシンプルなCRUD操作方法について説明します.
機能の特徴
宣言
模範項目:https://github.com/2881099/FreeSql/tree/master/Examples/base_entity
参考BaseEntity.csソースコード(約100行)、プロジェクトで使用され、nugetリファレンスパッケージを追加します.
dotnet add package FreeSql.Repository
dotnet add package FreeSql.Provider.Sqlite
1、プライマリ・キーintを定義し、自己増加するエンティティ・タイプ.BaseEntity TKeyがint/longとして指定された場合、プライマリ・キーは自己増加とみなされます.public class UserGroup : BaseEntity
{
public string GroupName { get; set; }
}
プライマリ・キーがオートインクリメント・キーでない場合は、プロパティを書き換えることができます.public class UserGroup : BaseEntity
{
[Column(IsIdentity = false)]
public override int Id { get; set; }
public string GroupName { get; set; }
}
詳細なエンティティのプロパティ構成については、次の資料を参照してください.https://github.com/2881099/Fr...
2、プライマリ・キーGuidのエンティティ・タイプを定義し、データを保存すると自動的に順序付けられた重複しないGuid値が生成されます(Guid.NewGuid()を自分で指定する必要はありません).public class User : BaseEntity
{
public string UserName { get; set; }
}
3、マルチプライマリ・キーのエンティティ・タイプを定義し、staticコンストラクション関数でフィールド名を書き換えることができる.public class User2 : BaseEntity
{
static User2()
{
User2.Orm.CodeFirst.ConfigEntity(t =>
{
t.Property(a => a.PkId1).Name("UserId");
t.Property(a => a.PkId2).Name("Index");
});
}
public string Username { get; set; }
}
CRUD使用 //
var item = new UserGroup { GroupName = " " };
item.Insert();
//
item.GroupName = " ";
item.Update();
//
item.Save();
//
item.Delete();
//
item.Restore();
//
var item = UserGroup.Find(1);
//
var items = UserGroup.Where(a => a.Id > 10).ToList();
エンティティのタイプSelectはクエリーオブジェクトであり、使用方法とFreeSqlである.ISelectと同じです.
マルチテーブルクエリーをサポートする場合、ソフト削除条件は各テーブルに添付されます.
詳細については、次の情報を参照してください.https://github.com/2881099/Fr...
public class UserGroup : BaseEntity
{
public string GroupName { get; set; }
}
public class UserGroup : BaseEntity
{
[Column(IsIdentity = false)]
public override int Id { get; set; }
public string GroupName { get; set; }
}
public class User : BaseEntity
{
public string UserName { get; set; }
}
public class User2 : BaseEntity
{
static User2()
{
User2.Orm.CodeFirst.ConfigEntity(t =>
{
t.Property(a => a.PkId1).Name("UserId");
t.Property(a => a.PkId2).Name("Index");
});
}
public string Username { get; set; }
}
//
var item = new UserGroup { GroupName = " " };
item.Insert();
//
item.GroupName = " ";
item.Update();
//
item.Save();
//
item.Delete();
//
item.Restore();
//
var item = UserGroup.Find(1);
//
var items = UserGroup.Where(a => a.Id > 10).ToList();
エンティティのタイプSelectはクエリーオブジェクトであり、使用方法とFreeSqlである.ISelectと同じです.
マルチテーブルクエリーをサポートする場合、ソフト削除条件は各テーブルに添付されます.
詳細については、次の情報を参照してください.https://github.com/2881099/Fr...