Entity Framework:在2.2版本中将字符串参数传递给FromSql语句
Entity Framework: Passing String Parameter to FromSql Statement in Version 2.2
我正在尝试将字符串参数传递给 SQL 查询,
接收错误如下。我该如何解决这个问题?当前正在使用答案
Input String was not in a correct format.
public async Task<IEnumerable<Product>> GetProduct(string productKey)
{
var productParameter = new SqlParameter("@productKey", SqlDbType.VarChar);
productParameter.Value = productKey;
var productIdList = db.TestDb
.FromSql($"select ProductId from dbo.Product product" +
" (where product.ProductKey = {productParameter})" )
.Select(c => c.ProductId).ToList();
它是来自 ProductKey 的 varchar(6) 类型
使用 Net Core 2.2
1) 查询不正确:您没有 FROM 语句,这是必需的。
我想你想要的是
select productKey
from dbo.Product product
where product.Product = <paramName>
2) 当使用 FromSQL 时:在查询字符串中你必须输入参数的名称,而不是实例。因此,将 {productParameter} 更改为 @productKey
3) 将 SqlParameter 实例作为第二个参数传递给 FromSql 方法。
var productParameter = new SqlParameter("@productKey", SqlDbType.VarChar);
productParameter.Value = productNumber;
var product= db.Tra
.FromSql($@"
select productKey
from dbo.Product product
where product.ProductKey = {productParameter.Name}", productParameter);
这可能会成功:
var productParameter = new SqlParameter("@productKey", productKey);
var productIdList = db.TestDb
.FromSql("select ProductId from dbo.Product where ProductKey = @productParameter",productParameter )
.ToList();
如果您正在使用 FromSql
,您应该像这样构建代码以正确应用 SqlParameter:
var productIdList = db.TestDb
.FromSql($"select ProductId from dbo.Product product where product.ProductKey = @productKey",productParameter )
.Select(c => c.ProductId).ToList();
根据您使用的 EF 版本,您也可以使用 FromSqlInterpolated
而不是 FromSql
并取消 SqlParameter altoghter。
我正在尝试将字符串参数传递给 SQL 查询,
接收错误如下。我该如何解决这个问题?当前正在使用答案
Input String was not in a correct format.
public async Task<IEnumerable<Product>> GetProduct(string productKey)
{
var productParameter = new SqlParameter("@productKey", SqlDbType.VarChar);
productParameter.Value = productKey;
var productIdList = db.TestDb
.FromSql($"select ProductId from dbo.Product product" +
" (where product.ProductKey = {productParameter})" )
.Select(c => c.ProductId).ToList();
它是来自 ProductKey 的 varchar(6) 类型
使用 Net Core 2.2
1) 查询不正确:您没有 FROM 语句,这是必需的。 我想你想要的是
select productKey
from dbo.Product product
where product.Product = <paramName>
2) 当使用 FromSQL 时:在查询字符串中你必须输入参数的名称,而不是实例。因此,将 {productParameter} 更改为 @productKey
3) 将 SqlParameter 实例作为第二个参数传递给 FromSql 方法。
var productParameter = new SqlParameter("@productKey", SqlDbType.VarChar);
productParameter.Value = productNumber;
var product= db.Tra
.FromSql($@"
select productKey
from dbo.Product product
where product.ProductKey = {productParameter.Name}", productParameter);
这可能会成功:
var productParameter = new SqlParameter("@productKey", productKey);
var productIdList = db.TestDb
.FromSql("select ProductId from dbo.Product where ProductKey = @productParameter",productParameter )
.ToList();
如果您正在使用 FromSql
,您应该像这样构建代码以正确应用 SqlParameter:
var productIdList = db.TestDb
.FromSql($"select ProductId from dbo.Product product where product.ProductKey = @productKey",productParameter )
.Select(c => c.ProductId).ToList();
根据您使用的 EF 版本,您也可以使用 FromSqlInterpolated
而不是 FromSql
并取消 SqlParameter altoghter。