2017-02-28 116 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

相關問題