我已經在我的模型稱爲StatusChange一個額外的領域,這是使用存儲過程來從表中還有額外的字段StatusChange所有字段填入實體框架:在插入忽略一個字段只
SELECT New.*, [dbo].[ftn_GetStatusChange](Old.MemberStatusId, New.MemberStatusId) AS StatusChange
FROM Member New
LEFT OUTER JOIN Member Old ON New.MemberNo = Old.MemberNo AND Old.ImportHistoryID = @ImportIdToCompare
WHERE New.ImportHistoryID = @NewestImportId
下面是函數
CREATE FUNCTION [dbo].[ftn_GetStatusChange]
(
@OldStatus char,
@NewStatus char
)
RETURNS int
AS
BEGIN
IF (@OldStatus IS NULL)
BEGIN
RETURN 1
END
IF (@OldStatus = 'R')
BEGIN
IF @NewStatus = 'C' RETURN 5
IF @NewStatus = 'S' RETURN 4
END
IF (@OldStatus = 'C')
BEGIN
IF @NewStatus = 'R' RETURN 3
IF @NewStatus = 'S' RETURN 4
END
IF (@OldStatus = 'S')
BEGIN
IF @NewStatus = 'C' RETURN 5
IF @NewStatus = 'R' RETURN 3
END
RETURN 0
END
這是枚舉的數字地圖
public enum StatusChange
{
NoChange = 0,
New = 1,
Current = 2,
Resigned = 3,
Suspended = 4,
Reinstated = 5,
}
該數據庫表沒有現場StatusChange雖然因爲沒有必要,所以我嘗試添加計算的財產在C#中的屬性
這是C#代碼
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public StatusChange StatusChange { get; set; }
但是我當呼籲的DbContext的SaveChanges()我得到的錯誤
Invalid column name 'StatusChange'.
反正我只能擁有這件屬性SELECT和忽略它的INSERT?
你可以添加'[NotMapped]'屬性的屬性?或者這也會導致該屬性在加載時不被設置? – Patrick
我試過這個,但是然後執行SELECT的SPROC忽略了StatusChange屬性。 – Coesy
由它的外觀,你將需要改變你的設計,使這項工作。你不能使用[NotMapped]並獲取你需要的信息,然後分別進行StatusChange。就像在選擇Old.MemberStatusId,New.MemberStatusId中包含字段並在運行時轉換爲狀態一樣, – Seabizkit