6

Ich habe diese zwei entityesEntity Framework Ungültige Spaltenname, fügt EF numer 1 bis Primärschlüssel

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; } 
} 

, wenn versuchen, diese Abfrage auszuführen:

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

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

Es Diese Nachricht werfen:

System.Data.SqlClient.SqlException: Ungültiger Spaltenname 'Suscriptores_IdSuscriptor1'

Der Versuch, so Dieses Problem füge ich fließend bei DBCOntext hinzu

Aber das Problem bleibt bestehen. Wie kann ich tun, um dies zu lösen?

+2

Einfach nur neugierig, sollte dies kein viel Tomany Vereinigung sein? Ich würde nicht gerne etwas veröffentlichen, wissend, dass ich nur einen Abonnenten bekomme :) –

+0

das ist über die 3. + 1 heute Gert. Ich mag deine Posts :-) –

+0

Tks Gert für deine "Kommentar", wirklich bin ich neuer mit EF, nur ein wenig Erfahrung damit.Es gibt viele'Publicaciones''für jeden''Suscriptores''und einen'Suscriptores''für jede''Publicaciones'', das möchte ich modellieren. –

Antwort

4

Versuchen Sie, eine Viele-zu-Eins-Zuordnung hinzuzufügen. Bitte verwenden Sie die reine Fluent-API, und Sie sollten die [ForeignKey] -Anmerkungen entfernen.

+0

Tks, ich versuche jetzt –

+0

irgendein Feedback Juan? –

7

Ich erhielt diesen Fehler in Bezug auf eine nicht-fremde Schlüsselspalte und verschwendet viel zu viel Zeit, um den Fehler herauszufinden. Es war in meinem Code, nicht in EF oder in der Datenbank. Ich hatte einfach dachte dass ich

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

getippt hatte Aber was hatte ich getippt war

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

Ich glaube, ich wurde auf der Linie der Suche oben und setzen t.Revision statt t.DistributionClass. Und egal wie lange ich es betrachtete, ich konnte meinen eigenen Fehler nicht sehen. Mit etwas Glück wird dies einige andere arme Seelen einige Zeit retten.

2

Ich hatte ein ähnliches Problem, wo ich eine innere Ausnahme mit der Nummer eins an den Feldnamen angehängt bekam. Komm, es herauszufinden, weil ich kopiert und eingefügt habe und vergessen habe, den Namen der Property zu ändern. Zum Beispiel:

Property(x => x.SomeProperty).HasColumnName("SomeProperty").IsOptional(); 
Property(x => x.SomeProperty).HasColumnName("SomeOtherProperty").IsOptional(); 

Hinweis habe ich die Spaltennamen in Anführungszeichen geändert, aber ich hatte aus Versehen die gleiche Eigenschaft in meinem Lambda. Das hat mich gebissen. Hoffentlich wird das helfen.

Property(x => x.SomeProperty).HasColumnName("SomeProperty").IsOptional(); 
Property(x => x.SomeOtherProperty).HasColumnName("SomeOtherProperty").IsOptional(); 

Dies behebt das Problem.

0

Ich hatte dieses Problem in meiner Artikeltabelle auf einer Eigenschaft (Spalte), die ich gerade hinzugefügt hatte, und wie frustrierend!

Es stellte sich heraus, dass ich eine List-Eigenschaft im Datenmodell für Order hatte, und weil ich es in dieser Konfiguration nicht ignorierte, verursachte es das gleiche Problem in der Item-Tabelle. Dies wäre nicht passiert, außer dass beide Tabellen eine Eigenschaft mit dem gleichen Namen hatten, also musste ich das tun ... was ich sowieso hätte tun sollen.

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

Verwandte Themen