EFコアのFromSqlでストアドプロシージャを呼び出せません

c# entity-framework-core

質問

私はEFコアからストアドプロシージャを呼び出そうとしていますが、エラーに遭遇して解決する方法がわかりません。

クラス:

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>を追加すると、セットの主キーが不足していると不平を言って別の例外が発生します。

人気のある回答

IDまたはPalyerOverviewIdという列がないため、DbSetを追加し、プライマリキーを定義する必要があります。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
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ