📜  带有 EF 核心的存储过程 - Javascript (1)

📅  最后修改于: 2023-12-03 15:39:24.100000             🧑  作者: Mango

带有 EF Core 的存储过程 - JavaScript

简介

Entity Framework Core(EF Core)是一个基于 .NET Core 的对象关系映射框架。它可以帮助开发人员在 .NET 应用程序中轻松访问数据库。EF Core 简化了与数据库交互的过程,使开发人员可以更加专注于业务逻辑。本文旨在介绍带有 EF Core 的存储过程,以及如何在 JavaScript 中使用它们。

什么是存储过程?

存储过程是一组预编译的 SQL 语句和过程,类似于函数。存储过程可以由数据库开发人员编写和优化,然后由其他应用程序访问。存储过程通常用于执行常见的数据库操作,如插入、更新和删除数据。与应用程序直接执行 SQL 命令相比,使用存储过程可以提高应用程序的性能,减少代码重复,并可以为应用程序提供更好的安全性和可维护性。

EF Core 中的存储过程

在 EF Core 中,存储过程可以使用 FromSqlRawFromSqlInterpolated 方法执行。

FromSqlRaw

FromSqlRaw 可以使用原生 SQL 查询实体集合。例如,下面的代码使用存储过程查询 Products 表中价格大于 10 的所有产品:

var products = context.Products.FromSqlRaw("EXECUTE dbo.GetProducts @price = {0}", 
    parameters: new[] { 10 }).ToList();

上述代码使用 FromSqlRaw 方法和存储过程名称 dbo.GetProducts 查询数据库。 @price 参数的值为 10。查询结果可转换为 List<Product>

FromSqlInterpolated

FromSqlInterpolated 类似于 FromSqlRaw,但允许传递参数。例如,下面的代码使用存储过程查询 Products 表中价格大于 10 和名称包含 “apple” 的所有产品:

var price = 10;
var name = "apple";
var products = context.Products.FromSqlInterpolated(
    $"EXECUTE dbo.GetProducts @price = {price}, @name = {name}").ToList();

上述代码使用 FromSqlInterpolated 方法和存储过程名称 dbo.GetProducts 查询数据库。 @price 参数的值为 10@name 参数的值为 apple。 查询结果可转换为 List<Product>

使用 EF Core 存储过程的 JavaScript 示例

在 JavaScript 中,可以使用 Fetch API 或类似的 AJAX 工具从 web 应用程序访问 API。下面的示例演示如何使用 Fetch API 调用使用 EF Core 存储过程查询 Products 数据表的 API,并将查询结果呈现给用户。

// API endpoint
const getProductsUrl = 'https://example.com/api/products';

// Fetch products from API
async function getProducts() {
  const response = await fetch(getProductsUrl);
  const products = await response.json();
  renderProducts(products);
}

// Render products to UI
function renderProducts(products) {
  const productList = document.getElementById('productList');
  productList.innerHTML = '';
  products.forEach(product => {
    const li = document.createElement('li');
    li.textContent = product.name;
    productList.appendChild(li);
  });
}

// Call getProducts() to fetch and render data
getProducts();

上述代码使用 Fetch API 获取存储过程查询的结果,并将查询结果呈现为产品列表。

结论

在 JavaScript 应用程序中使用 EF Core 存储过程可以提供更好的性能、重用和可维护性。本文介绍了如何使用 EF Core 中的 FromSqlRawFromSqlInterpolated 方法执行存储过程,并为使用 JavaScript 的应用程序提供了示例代码。