無法使用EF Core中的FromSql調用存儲過程

c# entity-framework-core

我試圖從EF Core調用存儲過程,並遇到錯誤,我不知道如何解決。

類:

public class PlayerOverview
{
    public string Player { get; set; }
    public int World { get; set; }
    public string Alliance { get; set; }
    public int Score { get; set; }
    public int Castles { get; set; }
    public int Cities { get; set; }
}

查詢:

    _context.Set<PlayerOverview>()
            .FromSql($"CALL usp_player_overview('{player}')")
            .Select(pl => new
            {
                Player = pl.Player,
                World = pl.World,
                Alliance = pl.Alliance,
                Score = pl.Score,
                Castles = pl.Castles,
                Cities = pl.Cities
            });

例外情況:

拋出異常:Microsoft.EntityFrameworkCore.dll中的“System.InvalidOperationException”

附加信息:無法為“PlayerOverview”創建DbSet,因為此類型未包含在上下文的模型中。

如何在上下文模型中包含此類?如果我添加一個DbSet<PlayerOverview>我會得到一個不同的異常,抱怨該集合缺少主鍵。

熱門答案

您需要添加DbSet並定義主鍵,因為沒有名為Id或PalyerOverviewId的列,EF無法猜測哪個列是鍵。因此,使用[Key]屬性或流暢的api(或者只是在結果和模型中添加一個唯一的PlayerOverviewId:

[Key]
public string Player { get; set; }

https://docs.microsoft.com/en-us/ef/core/modeling/keys



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow