一、目前EF Core的版本为V2.1
相比较EF Core v1.0 目前已经增加了不少功能。
EF Core除了常用的增删改模型操作,Sql语句在不少项目中是不能避免的。
在EF Core中上下文,可以返货DbConnection ,执行sql语句。这是最底层的操作方式,代码写起来还是挺多的。
初次之外 EF Core中还支持 FromSql,ExecuteSqlCommand 连个方法,用于更方便的执行Sql语句。
另外,目前版本的EF Core 不支持SqlQuery,但是我们可以自己扩展一个。坐等升级以后支持吧。
1.FromSql,执行列表查询
public static IQueryable<TEntity> FromSql<TEntity>([NotNullAttribute] this IQueryable<TEntity> source,
[NotParameterized] RawSqlString sql,
[NotNullAttribute] params object[] parameters) where TEntity : class;
这种方式,仅用于当前上线文中注册的 模型对象。
对于上下文DbSet<T>中没有定义的不起作用。
示例代码1:
//执行sql查询语句 FromSql() QLLB_SWXContext _Context = new QLLB_SWXContext(); string sql = "select * from Article where CategoryID=1;"; List<Article> list = _Context.Article.FromSql(sql).ToList(); foreach (var item in list) { Console.WriteLine(item.Title); }
示例代码2:视图中的查询
---创建视图,查询没有分配角色的菜单 create view view_NoRole as select * from Sys_Navigation where NavID not in ( select distinct NavID from Sys_Role_Nav )
//查询视图 string sql2 = "select * from view_NoRole"; List<SysNavigation> roleList = _Context.SysN