zoukankan      html  css  js  c++  java
  • .NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程

    Entity Framework是微软出品的高级ORM框架,大多数.NET开发者对这个ORM框架应该不会陌生。本文主要罗列在.NET(ASP.NET/WINFORM)应用程序开发中使用Entity Framework直接执行SQL语句或者存储过程的一些代码片段。具体请见以下正文:

    1.使用SqlQuery在已知的实体上执行SQL查询语句

    这里的Posts必须是程序项目或者引用中已声明的实体类,ToList()是必须的,否则SQL查询将不会被执行。

    注意:如果使用原始的SQL查询语句,请一定要注意处理SQL注入攻击相关的安全问题。

    2.使用SqlQuery在已知的实体上执行存储过程

    这里的Posts必须是程序项目或者引用中已声明的实体类,ToList()是必须的,否则SQL查询将不会被执行。以上代码将执行存储过程: spGetTopPosts

    3.使用SqlQuery在已知实体上执行带参数的存储过程

    这里的Posts必须是程序项目或者引用中已声明的实体类,Single()是必须的,否则SQL查询将不会被执行。以上代码将执行存储过程: spGetTopPosts,并带一个传入参数postID

    4.使用SqlQuery在未知实体上执行SQL查询语句

    5.使用SqlQuery执行带参数的SQL查询语句

    这是一种相比更安全的,可避免SQL注入攻击的执行原始SQL查询语句的方式

    这里的SQL语句将查询Posts表,所以用到了typeof(Post)。如果JOIN语句来查询不同的两张表的话,就需要写一个内部类来返回SQL语句的查询结果。

    以下则是一个使用JOIN连接查询的具体实例。

    假如有Posts,Category,Posts_Category这三张表。Posts_Category是Post表中Post Id列以及Category表中Category Id列的映射表。如果我们执行如下的JOIN连接SQL查询:

    查询结果将是所有给定Post的Categories列表。

    6.使用ExcuteSqlCommand在未知实体上执行更新操作

    总结:以上的SqlQuery和ExecuteSqlCommand方法均是DbContext对应数据库实例的方法,如果是执行原始的未经处理的SQL语句时,请一定注意SQL注入攻击等安全性问题!!!
    本文翻译至:http://adicodes.com/entity-framework-raw-sql-queries-and-stored-procedure-execution/

    出处来自 https://www.ofnhkb1.com/chenmo/128.html

  • 相关阅读:
    [TypeScript] Typescript Interfaces vs Aliases Union & Intersection Types
    [Angular] Using ngTemplateOutlet to create dynamic template
    [Angular] Create dynamic content with <tempalte>
    [Postgres] Create a Postgres Table
    [Typescript 2] Nullable Types
    [Ramda] Sort, SortBy, SortWith in Ramda
    [Django] Creating an app, models and database
    .NET通用权限系统快速开发框架
    MVC中使用EF(1):为ASP.NET MVC程序创建Entity Framework数据模型
    TIME_WAIT引起Cannot assign requested address报错
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/6638258.html
Copyright © 2011-2022 走看看