📅  最后修改于: 2023-12-03 15:39:24.100000             🧑  作者: Mango
Entity Framework Core(EF Core)是一个基于 .NET Core 的对象关系映射框架。它可以帮助开发人员在 .NET 应用程序中轻松访问数据库。EF Core 简化了与数据库交互的过程,使开发人员可以更加专注于业务逻辑。本文旨在介绍带有 EF Core 的存储过程,以及如何在 JavaScript 中使用它们。
存储过程是一组预编译的 SQL 语句和过程,类似于函数。存储过程可以由数据库开发人员编写和优化,然后由其他应用程序访问。存储过程通常用于执行常见的数据库操作,如插入、更新和删除数据。与应用程序直接执行 SQL 命令相比,使用存储过程可以提高应用程序的性能,减少代码重复,并可以为应用程序提供更好的安全性和可维护性。
在 EF Core 中,存储过程可以使用 FromSqlRaw
或 FromSqlInterpolated
方法执行。
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
类似于 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>
。
在 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 中的 FromSqlRaw
和FromSqlInterpolated
方法执行存储过程,并为使用 JavaScript 的应用程序提供了示例代码。