EF Core Find使用Nullable Id打破

.net-core asp.net-core-mvc asp.net-mvc entity-framework-core

在Mac上使用EF Core 1.1Asp Core 1.1

有一個像這樣的模型

public class Model {
  public int? Id { get; set; }
  public string OtherProp { get; set; }
}

一個動作

public class ModelController
{
    public Model Get(int? id) 
    {
      DbContext.Set<Model>.Find(id)
    }
}

訪問url /model/10失敗並顯示消息The key value at position 0 of the call to 'DbSet<Model>.Find' was of type 'int', which does not match the property type of 'Nullable<int>'

錯誤消息很明確,但我的問題是,如果有辦法使這項工作,它似乎是一個非常常見的用例和曾經在以前的版本中工作的用例。

我嘗試將idint?但它不起作用。有任何想法嗎?

此外,如果它有用,這就是在EF中打破的線

熱門答案

查看已經鏈接的代碼:這不起作用,因為CLR始終為您提供無法實現的基礎類型。 (不知道為什麼,之前有過類似的問題......)

在代碼中: typeof(int?) != ((int?)1).GetType()

因此,比較屬性的類型( int? )和參數的類型將始終失敗。您必須要求EF Core團隊為此添加對無效類型的支持。

相關: Nullable類型不是可空類型?



Related

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