Mam dużą bazę danych istniejącą bazę danych, z którą mogę się komunikować, i używam najpierw bazy danych EF 5.0, problem, który mam, polega na tym, że jeśli utworzę jakiekolwiek dekoracje danych, takie jak [stringlength(50)]
w klasie a następnie bazy danych są ładowane, kiedy "ładuję z bazy danych" wszystkie adnotacje danych zniknęły. Jak mogę je zachować?utrata danychAnotacja przy przesyłaniu modelu z bazy danych
Odpowiedz
To bardzo proste: Nie możesz! Ponieważ kody te są generowane automatycznie i zostaną nadpisane przy każdej aktualizacji lub zmianie każdego modelu.
Jednak możesz osiągnąć to, czego potrzebujesz, rozszerzając modele. Załóżmy, że EF generowane następujące klasy encji dla Ciebie:
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; }
}
}
i chcesz zrobić kilka arounds pracy, aby zachować cię adnotacji danych i atrybuty. Tak, wykonaj następujące kroki:
pierwsze, dodać dwie klasy gdzieś (tam, gdzie chcesz, ale lepiej być w Models
) jak następuje:
namespace YourSolution
{
[MetadataType(typeof(NewsAttribs))]
public partial class News
{
// leave it empty.
}
public class NewsAttribs
{
// Your attribs will come here.
}
}
następnie dodać jakie właściwości i atrybuty chcesz druga klasa - NewsAttribs
tutaj. :
public class NewsAttrib
{
[Display(Name = "News title")]
[Required(ErrorMessage = "Please enter the news title.")]
public string Title { get; set; }
// and other properties you want...
}
Uwagi:
1) nazw generowanego klasy encji i twoi klas musi być taka sama - tutaj YourSolution
.
2) Twoja pierwsza klasa musi być partial
a jego nazwa musi być taka sama jak EF generowanej klasy.
przejść przez to i wasze attribs nigdy nie zostało utracone ponownie ...
skończyło się robi somthing tak folowing samouczek http://msdn.microsoft. com/en-us/library/ee256141 (v = vs.100) .aspx – EricGS
wspaniały przykład - Mój kluczowy błąd polegał na tym, że przestrzeń nazw nie była taka sama. Chciałbym prędzej znaleźć ten przykład! Chciałbym, aby tytuł tego wątku był łatwiejszy do znalezienia. Rozszerzanie klas częściowych i dodawanie wartości DataValidation do MVC. Świetna odpowiedź. Dziękuję Ci. – BriOnH
zaktualizowałem moją odpowiedź, aby pokazać, w jaki sposób ... – AminSaghi