(六)EFCore业务层,相当于继承了泛型基础类得service层(调用存储过程,视图,执行sql)的实现


public class FromeProService : EfDbGet// EfDbGet相当于基础泛型类,FromeProService想到与子类,在里面写拓展的其他非公用方法
{

public FromeProService(PmsContext context) : base(context)
{

}
//执行存储过程
public List GetFrom()
{
return _context.Set().FromSqlRaw("exec Tc").ToList();
}
//执行视图
public List GetView()
{
return _context.Set().AsQueryable().ToList();
}
// 执行sql语句
public List GetSqlObj()
{
SqlParameter[] sqs = new SqlParameter[] {
new SqlParameter("name1", "333")
};
string sql = "select T1.*,T3.name1 from T1 join t3 on T1.id=T3.t1id ";
List ts = _context.Set().FromSqlRaw(sql, sqs).ToList();

string ss = _context.Set().FromSqlRaw(sql, sqs).ToQueryString();

return _context.Set().FromSqlRaw(sql).ToList();
}

注意点:

t1andt3必须要附加到上下文,只是作为一个存储结果得类

modelBuilder.Entity().HasNoKey().ToView("t1andt3");//表示把t1andt3附加到上下文,HasNoKey(设置没有主键),这个类得作用是只存储结果

//[NotMapped]
//public int id { get; set; }//NotMapped用codefirst生成得时候不会映射到表字段,但是查询得时候值为空,表里面字段得值不会映射到字段里面去

ORM