EF Core中执行Sql语句查询操作之FromSql,ExecuteSqlCommand,SqlQuery

本文介绍了在EF Core 2.1版本中如何执行SQL语句,包括使用FromSql进行列表查询,ExecuteSqlCommand执行操作处理,以及自定义SqlQuery方法来处理上下文中未定义的对象。提供了示例代码展示各种用法,如针对视图的查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目前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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值