【发布时间】:2019-09-16 17:22:26
【问题描述】:
我正在使用存储过程从数据库中检索列,并通过 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; }
}
}
{ “身份证”:“1”, "名称":"ABC", “参考编号”:””, “订单号”:”” }
我们是否可以选择获取这些值?
【问题讨论】:
-
你少了一个“]”。
-
您的选择语句未返回任何名称为 ReferenceNumber 或 BookingNumber 的列。对象中的属性名称必须与数据读取器中的属性名称匹配才能正常工作。您可以重命名数据库列以匹配模型上的确切属性名称,或者重命名模型上的属性名称以匹配数据库列名称
-
真正的问题是什么?为什么值为空会有问题?
-
@codein 是正确的。
-
@codein 我们是否可以选择使用任何属性在 C# DTO 类中显式提及 db 列名?
标签: c# .net sql-server linq entity-framework-6