【问题标题】:Linq add non existing column to generated sql queryLinq 将不存在的列添加到生成的 sql 查询中
【发布时间】:2018-09-07 05:13:27
【问题描述】:

我在 ASP MVC 5 的 dbContext 中使用 LINQ。

首先,在上下文中,模型

[Table("Datos_Garantizados")]
public partial class Datos_Garantizados
{
    [Key]
    public long Version { get; set; }

    public decimal? Perdidas_Vacio { get; set; }

    public decimal? Corriente_Vacio { get; set; }

    public decimal? Perdidas_Cortocircuito_P_S { get; set; }

    public decimal? Perdidas_Cortocircuito_P_T { get; set; }

    public decimal? Perdidas_Cortocircuito_S_T { get; set; }

    public decimal? Tension_Cortocircuito_P_S { get; set; }

    public decimal? Tension_Cortocircuito_P_T { get; set; }

    public decimal? Tension_Cortocircuito_S_T { get; set; }

    public decimal? Ref_Tens_Cortocircuito_P_S { get; set; }

    public decimal? Ref_Tens_Cortocircuito_P_T { get; set; }

    public decimal? Ref_Tens_Cortocircuito_S_T { get; set; }

    public decimal? Bil_Primario { get; set; }

    public decimal? Bil_Secundario { get; set; }

    public decimal? Bil_Terciario { get; set; }

    public decimal? Aplicada_Primaria { get; set; }

    public decimal? Aplicada_Secundaria { get; set; }

    public decimal? Aplicada_Terciaria { get; set; }

    public decimal? SobreTemp_Aceite_Max { get; set; }

    public decimal? SobreTemp_Arroll_Medio { get; set; }

    public decimal? Ref_Perdidas_Cortocircuito_Primario_Secundario { get; set; }

    public decimal? Ref_Perdidas_Cortocircuito_Primario_Terciario { get; set; }

    public decimal? Ref_Perdidas_Cortocircuito_Secundario_Terciario { get; set; }

    public decimal? Potencia_Ref { get; set; }

}

上下文:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Perdidas_Vacio)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Corriente_Vacio)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Perdidas_Cortocircuito_P_S)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Perdidas_Cortocircuito_P_T)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Perdidas_Cortocircuito_S_T)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Tension_Cortocircuito_P_S)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Tension_Cortocircuito_P_T)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Tension_Cortocircuito_S_T)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Ref_Tens_Cortocircuito_P_S)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Ref_Tens_Cortocircuito_P_T)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Ref_Tens_Cortocircuito_S_T)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Bil_Primario)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Bil_Secundario)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Bil_Terciario)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Aplicada_Primaria)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Aplicada_Secundaria)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Aplicada_Terciaria)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.SobreTemp_Aceite_Max)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.SobreTemp_Arroll_Medio)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Ref_Perdidas_Cortocircuito_Primario_Secundario)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Ref_Perdidas_Cortocircuito_Primario_Terciario)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Ref_Perdidas_Cortocircuito_Secundario_Terciario)
        .HasPrecision(18, 0);

    modelBuilder.Entity<Datos_Garantizados>()
        .Property(e => e.Potencia_Ref)
        .HasPrecision(18, 0);
}

当我尝试从 Datos_Garantizados 表中获取列表时,查询向查询中添加了不正确的列。

我试过了:

var Lista = db.Datos_Garantizados.ToList();

但是当我尝试编译它时,我得到了一个 SqlException:

“Transformador_Codigo_delfos”列的 El 无效

在查询生成的SQL代码中有Transformador_Codigo_Delfos这个列被添加,这在数据库中是不存在的。

【问题讨论】:

  • 标记为重新打开,但也要修复标题。

标签: c# sql asp.net-mvc linq entity-framework-6


【解决方案1】:

问题出在数据库设计中。

我有这样的东西。

Transformador  | Datos_Garantizados | Trafo_x_Garantizados
*codigo_delfos | *version           | *version
tipo           | resistencia        | codigo_delfos
// more fields | //more fields      |

问题是一个中间表,它建立了一个 1-* 关系。

我修改了数据库

Transformador  | Datos_Garantizados | 
*codigo_delfos | *version           | 
 tipo          | codigo_delfos      | 
// more fields | more fields        |

然后将 ForeignKey 正确添加到 Datos_Garantizados 模型中的 Transformador 对象中。

[ForeignKey("Codigo_delfos")]
public virtual Transformador Transformador { get; set; }

谢谢!

【讨论】:

    猜你喜欢
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多