从物化的'System.Int32'键入'System.String'类型无效

本文关键字:System String 类型 无效 键入 Int32 | 更新日期: 2023-09-27 17:50:14

我使用实体框架6.0.2;在我开始得到这个错误之前,我使用的是以前的版本。

基本上,我用"string"属性设置模型,并执行查询或存储过程,并将结果转储为字符串,这总是有效的。

有什么建议吗?也许我可以使用"约定"进行转换?

,

SQL:
select ROW_NUMBER() OVER (ORDER BY (select Null)) AS Id, '0', 'Test0', 'some kind of data', 'Test1', 'possibly a datetime type', 'Test2'
C#:
public class SomeModel
{
    public int Id { get; set; }
    public string Test0 { get; set; }
    public string Test1 { get; set; }
    public string Test2 { get; set; }
}
Invalid Operation Exception:
var records = dbContext.Database.SqlQuery<SomeModel>("select ROW_NUMBER() OVER (ORDER BY (select Null)) AS Id, '0', 'Test0', 'some kind of data', 'Test1', 'possibly a datetime type', 'Test2'").ToList();    

.

从物化的'System.Int32'键入'System.String'类型无效

尽管这是一个没有答案的一岁。根据克罗诺上面的评论,我有自己的答案。

基本上,问题是数据类型。为了将SQL结果集绑定到模型,实体框架必须将数据类型从SQL转换为。net。

嗯,在。net中,我希望所有东西都以字符串的形式返回,因为被检索的数据的建议根本不是操作它,而是将其显示到网页或文件中。

需要更新查询以将所有结果列强制转换为varchar。@克罗诺在上面的评论中解释了这一点。视图不会为我工作,因为数据/结果是未知的。

编辑 7/2/2016

转换你的值!

select Cast(ROW_NUMBER() OVER (ORDER BY (select Null)) AS Id as int), Cast('0' as varchar(255)), Cast('Test0' as varchar(255)), Cast('some kind of data' as varchar(255)), Cast('Test1' as varchar(255)), Cast('possibly a datetime type' as varchar(255)), Cast('Test2' as varchar(255))
相关文章: