C# 从具体化的';System.Int16';键入';System.Int32';类型无效

C# 从具体化的';System.Int16';键入';System.Int32';类型无效,c#,entity-framework-6,C#,Entity Framework 6,我使用“实体框架6”从数据库加载数据。目前,我希望从视图而不是从带有ef6的表加载数据。我创建了一个只有属性的类(一个普通的旧c#对象(poco)) 您可以在此处看到一个poco类: public class Person { public string Name { get; set; } public int? PhoneNumber { get; set } public int? Age { get; set; } } 然后我想用以下代码加载视图: var sql

我使用“实体框架6”从数据库加载数据。目前,我希望从视图而不是从带有ef6的表加载数据。我创建了一个只有属性的类(一个普通的旧c#对象(poco))

您可以在此处看到一个poco类:

public class Person {

   public string Name { get; set; }
   public int? PhoneNumber { get; set }
   public int? Age { get; set; }

}
然后我想用以下代码加载视图:

var sql = "SELECT Name, PhoneNumber, Age from Person;"

using(var context = new PersonContext()){

      var personList = context.Database.SqlQuery<Person>(sql).toList();   
}

因此我知道属性类型数据库列类型不相等。但我如何才能找到代码中哪个属性与数据库列不相等?因为在实际应用中,我有很多属性,这个问题对我找到属性很重要。

你可以用编程的方式完成,但如果你能在那时候定义数据库,根据你的类属性创建数据属性,或者反之亦然,那就好了。你有没有给我举个例子?例子有点大,不能在注释中设置。你也可以尝试
yourpocroperty.GetType().Equals(TypeOfDataBaseProperty.GetType())
我不知道程序代码中的数据库类型。所以我不能检查所有的属性是否正确。你可以用编程的方法来做,但如果你能在那个时候定义数据库,根据你的类属性创建数据属性,或者反之亦然,那就好了。你有我的例子吗?例子有点大,不能在注释中设置。你也可以试试
yourpoProperty.GetType().Equals(TypeOfDataBaseProperty.GetType())
我不知道程序代码中的数据库类型。所以我不能检查所有的属性来检查哪一个是不正确的。
The specified cast from a materialized 'System.Int16' type to the 'System.Int32' type is not valid.