2017-02-28 123 views
1

我试图从EF Core调用存储过程,并且正在运行到一个错误,我不知道如何解决。无法使用EF Core中的FromSql调用存储过程

类别:

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>,我会得到一个不同的异常,抱怨缺少主键。

回答

2

您需要添加DbSet并定义主键,因为没有称为Id或PalyerOverviewId的列,EF无法猜测哪个列是关键。所以请使用[关键]属性或流畅API(或只需添加独特的PlayerOverviewId到你的结果和型号:

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

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

相关问题