實體框架7存儲過程結果到模型

c# entities entity-framework-core sql-server stored-procedures

我有一個模型,它通過EF7映射到數據庫。所有屬性都與表的映射列相同。

現在我有一個存儲過程,它返回一些連接列,但基礎仍然是映射模型。

這是我的模型(實體),它映射到我的數據庫上的Table1。

public partial class Table1 { public int id { get; set; } public bool Column1{ get; set; } public int Column2 { get; set; } public int Column3 { get; set; } public int Column4 { get; set; } public int Column5 { get; set; } }

我的StoredProcedure返回所有這些列,另外還有一個來自另一個表的列,其中包含有關此對象的其他信息。

所以我的StoredProcedure看起來像這樣:

CREATE PROCEDURE Table1_Select
    AS
        BEGIN
            SELECT  Column1,
                    Column2,
                    Column3,
                    Column4,
                    Column5,
                    Table2.JoinedColumn1
            FROM    Table1
            JOIN    Table2 on Table1.ID = Table2.ID_Table1
        END

我的想法是只為模型添加一個屬性

public string JoinedColumn1 {get; set;}

這是為了執行StoredProcedure,但是一旦我想要一個實體,它就不能正常工作

MyContext.Table1.FirstOrDefault(t=>t.id == 1)

這總是在Fiddler中返回服務器錯誤500,而使用“Table1.FromSql(”Table1Select“)”的存儲過程執行工作正常。

或者我是否必須決定是否將StoredProcedures用於我的模型或直接訪問實體?

任何最佳實踐或解決方案?

提前謝謝了。 Nicn

熱門答案

從你最近的帖子,你說你使用相同的模型並得到錯誤,所以我想建議在你的細節聲明實體之前使用[NOTMAPPED],

public int Column5 { get; set; }其中,而你打電話給你的SP只使用,所以這樣寫,

[NotMapped]
public int Column5 { get; set; }


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因