在SQL视图查询中,LINQ返回一个特定列的错误值



我的问题似乎很简单,但是我不知道发生了什么。

我有以下LINQ查询:

(from p in db.VW_PROJETOS
  join ic in db.vw_InstanciaCarteira
  on p.CodigoProjeto equals ic.CodigoProjeto
  where ic.CodigoCarteira == 125
  orderby p.CodigoProjeto
  select p).ToList();

它从VW_PROJETOS返回9个条目,如id, fk, string, date…如果我在SQL Server Management Studio中执行相同的查询,如下所示

select * from VW_PROJETOS p 
inner join vw_InstanciaCarteira ic on p.CodigoProjeto = ic.CodigoProjeto
where ic.CodigoCarteira = 125 
order by p.CodigoProjeto

将返回相同的9个条目,每个条目具有相同的数据,除了列"Desempenho"。下面是一个简短的例子:

SQL Server返回:

CodigoProjeto NomeProjeto Desempenho
13            Projeto 1   Satisfatório
1247          Projeto 2   NULL
1435          Projeto 3   Crítico

LINQ查询返回

CodigoProjeto NomeProjeto Desempenho
13            Projeto 1   Crítico   
1247          Projeto 2   Crítico   
1435          Projeto 3   Satisfatório

我看到了一些使用ROW_NUMBER为视图创建索引的例子,以帮助LINQ在使用视图时不丢失自己,但我不能使它正确工作(在SQL查询中显示的索引总是不同于LINQ返回的索引)。

这是一个普遍的问题吗?是否容易纠正或变通?它可能是视图本身的错误?

编辑:

根据您的一些建议,我检查了实体框架实体中唯一键和字段之间的关系。我在两个EF实体中正确地排列了几个键,但结果是一样的。我得到了由我的LINQ生成的SQL查询,它给出了与我上面发布的完全相同的结果。我还再次生成了模型,使用code - first从数据库,为了有键排序的代码生成,这是无用的,以及

Use this query.
(from p in db.VW_PROJETOS
  join ic in db.vw_InstanciaCarteira
  on p.CodigoProjeto equals ic.CodigoProjeto
  where ic.CodigoCarteira == 125
  orderby p.CodigoProjeto
  select  new {
  CodigoProjeto=p.CodigoProjeto,
  NomeProjeto=p. NomeProjeto,
  Desempenho=ic.Desempenho
  }.ToList();

检查两个数据库中列"CodigoProjeto"的数据类型。vw_instancacarteira和db.VW_PROJETOS。

相关内容

  • 没有找到相关文章

最新更新