2014-03-04 17 views
5

Ich verwende eine Entity Framework 6-Implementierung auf meinem Windows-Computer und es funktioniert gut. Um auf einem Linux-Computer zu verwenden, habe ich versucht, das Projekt mit Mono auszuführen. Wenn das Programm versucht, auf EF6 zuzugreifen, erhalte ich den folgenden Fehler:Mono Entity Framework 6 Duplikate

System.InvalidOperationException: The configured column orders for the table 'Table' contains duplicates. Ensure the specified column order values are distinct. 
    at System.Data.Entity.ModelConfiguration.Conventions.ColumnOrderingConventionStrict.ValidateColumns (System.Data.Entity.Core.Metadata.Edm.EntityType table, System.String tableName) [0x00000] in <filename unknown>:0 
    at System.Data.Entity.ModelConfiguration.Conventions.ColumnOrderingConvention.Apply (System.Data.Entity.Core.Metadata.Edm.EntityType item, System.Data.Entity.Infrastructure.DbModel model) [0x00000] in <filename unknown>:0 
+0

haben wir Probleme mit EF 6 läuft auch auf Mono. Hoffentlich kennt jemand die Antwort. –

+0

Hallo Erik, welche Version von EF, Mono, MySQL verwendest du? – Michael

+0

MySQL 5.5.35 und die neueste Version von Mono (3.2.7) –

Antwort

1

Ich konnte eine Lösung finden. Einige meiner Entitäten verwendeten das Attribut Column. In meinem Fall benutzte ich [Column(TypeName = "Date")]. Wenn ich dieses Attribut entfernt habe, konnte ich das Entity-Framework auf meinem Linux-Server ausführen.

+0

Das ist nicht wirklich eine Lösung, wenn das 'Column' Attribut benötigt wird. Zum Beispiel I _befragte_, um anzugeben, dass der Spaltentyp "datetime2" ist. – nagytech

1

Mit dem EF Fluent API anstelle der [Spalte] Attribut für mich gearbeitet.

modelBuilder.Entity() Immobilien (t => t.SomeProp) .HasColumnType ("mytype");

0

Ich weiß, die Frage ist ziemlich alt, aber sowieso, ich bin hier gelandet.

Verwenden von EF-Code Zuerst fügte ich eine Spalte in mein Modell ein und änderte die Tabellenklasse manuell.

Überprüfen, ob keine Duplikate vorhanden sind. Sie können es beheben, indem Sie die [Column(Order = 1)] ändern.

0

bekam ich diesen Fehler für Entity Framework 6-Code zunächst für dieses Modell:

public class CycleTest 
{ 
    [MaxLength(5)] 
    [Key, Column(Order = 0)] 
    public string Action { get; set; } 

    [Key, Column(Order = 1)] 
    public int Cycle { get; set; } 

    public DateTime Created { get; set; } 

    [ForeignKey("Case"), Column(Order = 0)] 
    public string BusinessSystemId { get; set; } 

    [ForeignKey("Case"), Column(Order = 1)] 
    public int CaseId { get; set; } 

    public virtual Case Case { get; set; } 
} 

für ForeignKey Eigenschaften, um die Spaltenwerte geändert und alles funktionierte dann. Wie folgt aus:

public class CycleTest 
{ 
    [MaxLength(5)] 
    [Key, Column(Order = 0)] 
    public string Action { get; set; } 

    [Key, Column(Order = 1)] 
    public int Cycle { get; set; } 

    public DateTime Created { get; set; } 

    [ForeignKey("Case"), Column(Order = 2)] 
    public string BusinessSystemId { get; set; } 

    [ForeignKey("Case"), Column(Order = 3)] 
    public int CaseId { get; set; } 

    public virtual Case Case { get; set; } 
}