我正在尝试从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
});
例外:
抛出异常:'System.InvalidOperationException' Microsoft.EntityFrameworkCore.dll
其他信息:无法为“PlayerOverview”创建DbSet 因为此类型未包含在上下文的模型中。
如何在上下文的模型中包含此类?如果我添加DbSet<PlayerOverview>
,我会收到一个不同的异常,抱怨该集合缺少主键。
答案 0 :(得分:3)
您需要添加DbSet并定义主键,因为没有名为Id或PalyerOverviewId的列,EF无法猜测哪个列是键。因此,使用[Key]属性或流畅的api(或者只是在结果和模型中添加一个唯一的PlayerOverviewId:
[Key]
public string Player { get; set; }