实体框架无效的列名,EF增加NUMER 1主键(Entity framework Invalid C

2019-07-20 01:25发布

我有这两个实体:

public partial class Suscriptores
{
    public Suscriptores()
    {
       this.Publicacion = new HashSet<Publicacion>();
    }

    [Key]
    public int IdSuscriptor { get; set; }
    public string LogoSuscriptor { get; set; }
    public string Identificacion { get; set; }
    public string Nombre { get; set; }
    public string Direccion { get; set; }
    public string Telefono { get; set; }
    public string Email { get; set; }
    public string Fax { get; set; }
    public string Home { get; set; }

    public virtual ICollection<Publicacion> Publicacion { get; set; }
}

public partial class Publicacion
{
    public Publicacion()
    {
        this.Edictos = new HashSet<Edictos>();
    }

    [Key]
    public decimal IdPublicacion { get; set; }
    public System.DateTime FechaPublicacion { get; set; }
    public string IdUsuario { get; set; }
    public System.DateTime FechaPublicacionHasta { get; set; }
    public System.DateTime FechaArchivoHasta { get; set; }
    public int IdSuscriptor { get; set; }
    public decimal IdTipoPublicacion { get; set; }

    [ForeignKey("IdSuscriptor")]
    public virtual Suscriptores Suscriptores { get; set; }
}

当我尝试运行此查询:

public ActionResult DetailsVSTO(string Identificacion)
{
    var SusQ = from s in db.Suscriptores
               where s.Identificacion == Identificacion
               select s;

    return Json(SusQ.First(), JsonRequestBehavior.AllowGet);
}

它抛出此消息:

System.Data.SqlClient.SqlException:无效的列名称Suscriptores_IdSuscriptor1“

试图解决这个问题,我在加的DbContext这个流利的API代码:

modelBuilder.Entity<Suscriptores>()
    .HasMany(x => x.Publicacion)
    .WithRequired(x => x.Suscriptores)
    .Map(a => a.MapKey("IdSuscriptor"));

但问题仍然存在。 我该如何解决这个问题?

Answer 1:

尝试添加一个多到一的映射,以及。 请使用纯流利的API,你应该删除[ForeignKey的]注释。

modelBuilder.Entity<Publicacion>()
            .HasRequired(x => x.Suscriptores)
            .WithMany(x => x.Publicacion);


Answer 2:

我关于收到此错误的非外键列,浪费了太多时间试图找出错误。 这是在我的代码,而不是在EF或数据库。 我只是 ,我输入了

this.Property(t => t.Revision).HasColumnName("Revision");
this.Property(t => t.DistributionClass).HasColumnName("DistributionClass");

但我已经输入了

this.Property(t => t.Revision).HasColumnName("Revision");
this.Property(t => t.Revision).HasColumnName("DistributionClass");

我想我在上面看线,把t.Revision而不是t.DistributionClass 。 而且不管多久,我看着它,我看不到我自己的错误。 运气好的话,这将节省其他一些可怜的灵魂一段时间。



Answer 3:

我在项目表对刚刚加入我的属性(列)这个问题,怎么折腾!

原来我在数据模型中的列表属性的订单,因为我没有在该配置忽略它,它在项目表导致同样的问题。 这将不会发生,除了这两个表具有相同名称的属性,所以我不得不这样做......这是我应该做反正。

public OrderConfiguration() { Ignore(p => p.Items); }



文章来源: Entity framework Invalid Column name, EF adds numer 1 to primary key