EF Core Find使用Nullable Id打破

时间:2017-02-03 04:52:56

标签: asp.net-mvc asp.net-core-mvc .net-core entity-framework-core

在Mac上使用redisEF Core 1.1

使用类似

的模型
Asp 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) } } 失败,并显示消息/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>'投射到id,但它没有效果。有什么想法吗?

另外,如果它有用,则为the line that's breaking in EF

1 个答案:

答案 0 :(得分:2)

查看您已链接的代码:这不起作用,因为CLR始终为您提供无法实例的基础类型。 (不知道为什么,之前有过类似的问题......)

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

因此,比较属性的类型(int?)和参数的类型总是会失败。您必须要求EF Core团队为此添加对无效类型的支持。

相关:Nullable type is not a nullable type?