[英]Entity Framework stored column mapping issue with DTO
我正在使用存儲過程從數據庫中檢索列,並通過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”,“ Name”:“ ABC”,“ ReferenceNumber”:“”,“ BookingNumber”:“”}
我們是否可以選擇這些值?
您的select語句不返回任何名稱為ReferenceNumber或BookingNumber的列。 對象中的屬性名稱必須與數據讀取器中的屬性名稱匹配才能起作用。 您可以重命名數據庫列以匹配模型上的確切屬性名稱,也可以重命名模型上的屬性名稱以匹配數據庫列名稱。
或者,您可以按以下方式重寫您的SP:
CREATE PROCEDURE [dbo].[GetStocks]
(
(@id INTEGER
)
AS
BEGIN
SELECT ID, name, RefNo as 'ReferenceNumber ', BookingNo as 'BookingNumber ' from
FROM dbo.Stock where id =@id
END
由於您是基於id參數從db檢索單個實體的,因此無需調用ToList擴展方法。 使用.SingleOrDefaultAsync()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.