特性git
如何開始?github
string connectionString = "Host=127.0.0.1;Port=5432;Username=postgres;Password=123456;Database=your db;Pooling=true;Maximum Pool Size=100"; ILogger logger = loggerFactory.CreateLogger<MyStaging.Helpers.PgSqlHelper>(); _startup.Init(logger, connectionString);
實體對象說明
構建工具會自動生成DAL層,包含實體模型和對象關係,因爲執行數據庫查詢的過程當中,高度依賴實體模型映射,因此在生成實體模型時,對實體作了一些ORM的映射設置,這些設置對實體模型的影響很是小。sql
EntityMappingAttribute
該特性類接受一個屬性:TableName,指明該實體模型映射到數據庫中的>模式.表名,如數據庫
``` [EntityMapping(TableName = "public.user")] public partial class Public_userModel { } ```
ForeignKeyMappingAttribute
應用該該特性類到屬性上,表示這個是一個外鍵引用的屬性,如json
``` private Public_userModel _public_User=null; [ForeignKeyMapping,JsonIgnore]public Public_userModel Public_User { get{ if(_public_User==null)_public_User= Public_user.Context.Where(f=>f.Id==this.User_id).ToOne(); return _public_User;} } ``` *以上代碼還應用了特性:JsonIgnore ,表示,該外鍵在對象進行 json 序列化的時候選擇忽略該屬性*
NonDbColumnMappingAttribute
應用該該特性類到屬性上,表示這個是一個自定義的屬性,在進行數據庫查詢的時候將忽略該屬性,如c#
``` [NonDbColumnMappingAttribute,JsonIgnore] public Public_user.UpdateBuilder UpdateBuilder{get{return new Public_user.UpdateBuilder(this.Id);}} ```
以上代碼還應用了特性:JsonIgnore ,表示,該外鍵在對象進行 json 序列化的時候選擇忽略該屬性服務器
MyStaging.Helpers.QueryContext
DAL繼承的基類,該類實現了全部對數據庫操做的封裝,可直接繼承使用,若是使用腳手架附帶的構建工具,直接進行業務編寫便可app
數據庫操做框架
Public_userModel user = new Public_userModel(); user.Id = Guid.NewGuid(); user.Login_name = "test@gmail.com"; Public_user.Insert(user);
// 自動根據主鍵修改 Public_userModel user = new Public_userModel(); user.UpdateBuilder.SetLogin_time(DateTime.Now).SaveChange(); // 自定義條件修改 user.UpdateBuilder.SetLogin_time(DateTime.Now).Where(f => f.Sex == true).SaveChange(); // 直接修改 Public_user.Update(Guid.Empty).SetLogin_time(DateTime.Now).Where(f => f.Sex == true).SaveChange(); // 自定義條件的直接修改 Public_user.UpdateBuilder.SetLogin_time(DateTime.Now).Where(f => f.Id == Guid.Empty).Where(f => f.Sex == true).SaveChange();
// 根據主鍵刪除 Public_user.Delete(Guid.Empty); // 根據條件刪除 Public_user.DeleteBuilder.Where(f => f.Id == Guid.Empty).Where(f => f.Sex == true).SaveChange();
Public_userModel user = Public_user.Context.Where(f => f.Login_name == "test@gmail.com").ToOne();
Public_userModel user = Public_user.Context.Where(f => f.Login_name == "test@gmail.com").ToOne("id","login_name");
public class UserModel{ public string Login_name{get;set;} public Guid Id{get;set;} } Public_userModel user = Public_user.Context.Where(f => f.Login_name == "test@gmail.com").ToOne<UserModel>("id","login_name");
List<Public_userModel> list = Public_user.Context.ToList(); List<Public_userModel> list = Public_user.Context.Where(f => f.Login_name == "test@gmail.com").ToList(); public class UserModel{ public string Login_name{get;set;} public Guid Id{get;set;} } List<UserModel> list = Public_user.Context.ToList<UserModel>("id","login_name");
public class UserModel{ public string Login_name{get;set;} public Guid Id{get;set;} } List<UserModel> list = Public_user.Context.Union<TopicModel>("b",UnionType.INNER_JOIN,(a,b)=>a.Id==b.User_Id).Where(a=>a.Id=Guid.Empty).Where<TopicModel>(b=>b.Publish==true).ToList<UserModel>("id","login_name");
Public_user.Context.Where(f => f.Login_name == "test@gmail.com").OrderBy(f=>f.State).Page(1,10);
Public_user.Context.Where(f => f.Login_name == "test@gmail.com").OrderBy(f=>f.State); Public_user.Context.Where(f => f.Login_name == "test@gmail.com").OrderDescing(f=>f.State);
Public_user.Context.Where(f => f.Login_name == "test@gmail.com").Avg(f=>f.Age); Public_user.Context.Where(f => f.Login_name == "test@gmail.com").Sum(f=>f.Blance); // Max,Min,GroupBy,Having
PgSqlHelper.Transaction(() => { Public_userModel user= Public_user.Context.Where(f => f.Login_name == "test@gmail.com").ToOne(); user.UpdateBuilder.SetLogin_time(DateTime.Now).SaveChange(); });