特性
如何开始?
在生成的 db 项目文件根目录下,找到: _startup.cs 文件,在程序入口 Program.cs 或者 Startup.cs 的适当位置,使用以下代码,传递日志记录对象和数据库连接字符串进行 db 层初始化
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();
_startup.Init(logger, connectionString);
实体对象说明
构建工具会自动生成DAL层,包含实体模型和对象关系,由于执行数据库查询的过程中,高度依赖实体模型映射,所以在生成实体模型时,对实体做了一些ORM的映射设置,这些设置对实体模型的影响非常小。
EntityMappingAttribute
该特性类接受一个属性:TableName,指明该实体模型映射到数据库中的>模式.表名,如
```
[EntityMapping(TableName = "public.user")]
public partial class Public_userModel
{
}
```
ForeignKeyMappingAttribute
应用该该特性类到属性上,表示这个是一个外键引用的属性,如
```
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
应用该该特性类到属性上,表示这个是一个自定义的属性,在进行数据库查询的时候将忽略该属性,如
```
[NonDbColumnMappingAttribute,JsonIgnore] public Public_user.UpdateBuilder UpdateBuilder{get{return new Public_user.UpdateBuilder(this.Id);}}
```
以上代码还应用了特性:JsonIgnore ,表示,该外键在对象进行 json 序列化的时候选择忽略该属性
MyStaging.Helpers.QueryContext
DAL继承的基类,该类实现了所有对数据库操作的封装,可直接继承使用,如果使用脚手架附带的构建工具,直接进行业务编写即可
数据库操作
Public_userModel user = new Public_userModel();
user.Id = Guid.NewGuid();
user.Login_name = "[email protected]";
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 == "[email protected]").ToOne();
Public_userModel user = Public_user.Context.Where(f => f.Login_name == "[email protected]").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 == "[email protected]").ToOne("id","login_name");
List list = Public_user.Context.ToList();
List list = Public_user.Context.Where(f => f.Login_name == "[email protected]").ToList();
public class UserModel{
public string Login_name{get;set;}
public Guid Id{get;set;}
}
List list = Public_user.Context.ToList("id","login_name");
public class UserModel{
public string Login_name{get;set;}
public Guid Id{get;set;}
}
List list = Public_user.Context.Union("b",UnionType.INNER_JOIN,(a,b)=>a.Id==b.User_Id).Where(a=>a.Id=Guid.Empty).Where(b=>b.Publish==true).ToList("id","login_name");
Public_user.Context.Where(f => f.Login_name == "[email protected]").OrderBy(f=>f.State).Page(1,10);
Public_user.Context.Where(f => f.Login_name == "[email protected]").OrderBy(f=>f.State);
Public_user.Context.Where(f => f.Login_name == "[email protected]").OrderDescing(f=>f.State);
Public_user.Context.Where(f => f.Login_name == "[email protected]").Avg(f=>f.Age);
Public_user.Context.Where(f => f.Login_name == "[email protected]").Sum(f=>f.Blance);
// Max,Min,GroupBy,Having
PgSqlHelper.Transaction(() =>
{
Public_userModel user= Public_user.Context.Where(f => f.Login_name == "[email protected]").ToOne();
user.UpdateBuilder.SetLogin_time(DateTime.Now).SaveChange();
});