5

Ich habe eine große Datenbank bestehenden Datenbank zu kommunizieren, und ich benutze EF 5.0 Datenbank zuerst, das Problem, das ich habe, ist, dass wenn ich irgendwelche Daten Dekoration wie [stringlength(50)] auf der Klasse erstellen und dann werden die Datenbanken hochgeladen, wenn ich alle Datenanmerkungen aus der Datenbank "hochlade". Wie kann ich tun, um sie zu behalten?dataAnotation beim Upload-Modell aus der Datenbank

+0

ich meine Antwort aktualisiert, um Ihnen zu zeigen, wie ... – AminSaghi

Antwort

8

Es ist sehr einfach: Sie können nicht! Da diese Codes automatisch generiert werden, werden sie bei jedem Modellupdate überschrieben oder überschrieben.

Sie können jedoch erreichen, was Sie durch die Erweiterung von Modellen benötigen. Nehmen wir an, EF die folgende Entity-Klasse erzeugt für Sie:

namespace YourSolution 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class News 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public string Description { get; set; }   
     public int UserID { get; set; } 

     public virtual UserProfile User{ get; set; } 
    } 
} 

und Sie einige Workarounds tun, um Ihren Sie Daten Anmerkungen und Attribute zu bewahren. Also, gehen Sie folgendermaßen vor:

Fügen Sie zunächst zwei Klassen, wo einige (wo immer Sie wollen, aber es ist besser in Models zu sein) wie folgt aus:

namespace YourSolution 
{ 
    [MetadataType(typeof(NewsAttribs))] 
    public partial class News 
    { 
     // leave it empty. 
    } 

    public class NewsAttribs 
    {    
     // Your attribs will come here. 
    } 
} 

fügen Sie dann, welche Eigenschaften und Attribute, die Sie wollen die zweite Klasse - NewsAttribs hier. :

public class NewsAttrib 
{ 
    [Display(Name = "News title")] 
    [Required(ErrorMessage = "Please enter the news title.")] 
    public string Title { get; set; } 

    // and other properties you want... 
} 

Hinweise:

1) Der Namensraum der erzeugten Entitätsklasse und Ihre Klassen die gleiche sein muss - hier YourSolution.

2) Ihre erste Klasse muss sein partial und seinen Namen muss die gleiche wie EF generierte Klasse sein.

Gehen Sie durch diese und Ihre attribs nie wieder verloren gegangen ist ...

+1

i somthing wie das dieses Tutorial Folowing tun endete http://msdn.microsoft. com/de-us/library/ee256141 (v = vs.100) .aspx – EricGS

+0

genial Beispiel - Mein Schlüssel Fehler war nicht mit dem Namespace identisch sein. Ich wünschte, ich hätte dieses Beispiel früher gefunden! Ich wünschte, der Titel dieses Threads wäre besser, um einfacher zu finden. Teilklassen erweitern und DataValidation zu MVC hinzufügen. Gute Antwort. Danke. – BriOnH