2016-04-29 5 views
0

Ich möchte den Wert erhalten, wenn eine Nummer in die Datenbank eingefügt wird. Ich habe die letzte Funktion verwendet, aber es hat nicht funktioniert und Fehler zurückgegeben:Holen Sie den letzten Wert der Eigenschaft in Tabelle mit LINQ asp.net mvc

last not defined by LINQ TO ENTITIES.

Dies ist der Code, den ich verwendet habe:

int NumD = LigneCommande.Last().NumDocument; 

Das ist meine Klasse LigneCommande:

public partial class LigneCommande 
{ 


    [Key] 
    [Column(Order = 0)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int NumDocument { get; set; } 

    [Key] 
    [Column(Order = 1)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int NumLigne { get; set; } 

    [Required] 
    [StringLength(20)] 
    public string CodeArticle { get; set; } 

    public int Quantite { get; set; } 

    public int Disponible { get; set; } 

    public decimal PrixUnitaire { get; set; } 

    public byte Existe { get; set; } 

    [Required] 
    [StringLength(50)] 
    public string Designation { get; set; } 

    public byte Commander { get; set; } 

    [Required] 
    [StringLength(50)] 
    public string Nature { get; set; } 

    public DateTime DateDisponibilite { get; set; } 

    [Required] 
    [StringLength(50)] 
    public string commentaire { get; set; } 

    [Required] 
    [StringLength(20)] 
    public string numFacture { get; set; } 

    public decimal? Remise { get; set; } 

    public decimal? QteANNULEE { get; set; } 

    public int? statusAnnulee { get; set; } 

    [Column("Relicat Qte")] 
    public decimal? Relicat_Qte { get; set; } 
} 

Ich habe versucht, Last() mit First() nur zum Testen geändert und es funktioniert gut. Kann mir jemand helfen?

Antwort

3

Es gibt wirklich kein Konzept von "letzten" in einer Open-End-Datenquelle. Beachten Sie zum Beispiel, dass es in SQL keine Syntax für die Aufnahme des BOTTOM 1 Datensatzes gibt, sondern nur die TOP 1.

Aber "zuerst" funktioniert genauso gut, wenn Sie absteigend sortieren. Etwas wie folgt aus:

int NumD = LigneCommande.OrderByDescending(l => l.SomeProperty).First().NumDocument; 

, dass Sie das „letzte“ Objekt geben würde, indem man sie in umgekehrter Reihenfolge der Bestellung und nehmen die „erste“. Alles, was Sie tun müssen, ist zu definieren, was diese Bestellung ist.

+0

, wenn ich NumD = dbs versuchen. LigneCommande.First(). NumDocument es funktioniert, aber wenn ich versuche: int NumD = dbs.LigneCommande.OrderByDescending (l => I.SomeProperty) .First(). NumDocument; Ich erhalte diesen Fehler: Beim Erstellen des Modells kann kein Kontext verwendet werden – Sarra

+0

@Sarra: Sind Sie sicher, dass das die Fehlermeldung ist? Google scheint darauf hinzuweisen, dass du die einzige Person bist, die diesen Fehler jemals erhalten hat ... – David

+0

es ist jetzt Arbeit, danke für deine Hilfe :) :) @David deine Lösung funktioniert, danke – Sarra

1

niemand wäre in der Lage, dies zu beantworten, wenn wir nicht wüssten, was LigneCommande wurde definiert als. Die einzige Möglichkeit, dass ich diesen Code arbeiten sehen könnte ist LigneCommande war eine Art von IEnumerable<int> oder int[], die es wahrscheinlich nicht ist, seit Sie sagten, dies kommt für die Datenbank. Was Sie wahrscheinlich wollen, ist etwas wie das:

int NumD = LigneCommande.Select(x => x.MyColumnNameThatIsAInt).LastOrDefault(); 
+0

Ich habe versucht, Ihren Code, aber ich habe den gleichen Fehler. – Sarra

+0

danke @Scott Selby für Sie Hilfe – Sarra

-1

int NumD = LigneCommande.AsEnumerable(). LastOrDefault();

+0

wenn ich NumD = dbs versuche. igneCommande.First(). NumDocument es funktioniert, aber wenn ich versuche: – Sarra

Verwandte Themen