我正在使用存储过程从数据库中检索列,并通过EF代码优先方法将值绑定到我的DTO类中。
我面临着获取ReferenceNumber
,BookingNumber
属性值的问题。这些属性的值空了。
通过EF代码优先方法执行存储过程:
SqlParameter param1 = new SqlParameter("@Id", 1);
var stocks = await context.Database.SqlQuery<Stock>("dbo.[GetStocks @Id", param1).ToListAsync();
存储过程以获取库存清单:
CREATE PROCEDURE [dbo].[GetStocks]
(@id INTEGER)
AS
BEGIN
SELECT ID, name, RefNo, BookingNo
FROM dbo.Stock
END
DTO类获取值
namespace ConsoleApp6
{
using System;
public partial class Stock
{
public int ID { get; set; }
public string name { get; set; }
public string ReferenceNumber { get; set; }
public string BookingNumber { get; set; }
}
}
{ “ ID”:“ 1”, “名称”:“ ABC”, “参考编号”:””, “订单号”:”” }
我们是否可以选择获取这些值?
答案 0 :(得分:0)
您的select语句不返回任何名称为ReferenceNumber或BookingNumber的列。对象中的属性名称必须与数据读取器中的属性名称匹配才能起作用。您可以重命名数据库列以匹配模型上的确切属性名称,也可以重命名模型上的属性名称以匹配数据库列名称。
或者,您可以按以下方式重写SP:
library(stringr)
df1$Column <- str_extract(df1$Column, "\\b(H|B)\\d+\\b")
由于您要基于id参数从db检索单个实体,因此无需调用ToList扩展方法。使用.SingleOrDefaultAsync()