Я добавил некоторые атрибуты вокруг полей моей модели (сгенерированных EF) (например: [DisplayName («Office Contact»)]) Когда я обновляю свою модель из базы данных, мой класс модели восстанавливается, и я очевидно, я теряю эти атрибуты.Атрибуты модели MVC get overriden
есть обходное решение вокруг этого?
Спасибо.
ВОТ ИМЕННО Я использую на атрибутах EF МОДЕЛЬ:
EF модель: Office.cs мои ViewModel: NewOfficeViewModel.cs
но офис является собственностью моей ViewModel; поэтому я должен был поместить атрибуты вокруг свойств офиса.
Это считается неправильной практикой? должен ли я повторять свойства, которые мне нужны из класса модели EF, в моем классе модели просмотра и отображать их вручную? звуки повторяющиеся ко мне ...
Спасибо за помощь.
Вот мой код:
ViewModel:
общественного класса NewOfficeViewModel { частный UnitOfWork UnitOfWork = новый UnitOfWork();
public NewOfficeViewModel()
{
var vendors = unitOfWork.VendorRepository.Get();
var languages = unitOfWork.LanguageRepository.Get();
var correspondences = unitOfWork.PreferredCorrespondenceRepository.Get();
var provinces = unitOfWork.ProvinceRepository.Get();
var culture = CultureHelper.GetCurrentCulture();
Vendors = new SelectList(vendors, "VendorID", "Product");
Languages = new SelectList(languages, "LangID", culture == "fr" ? "Text_fr" : "Text_en");
Correspondences = new SelectList(correspondences, "PreferredCorrespondenceID", "PreferredCorrespondence1");
Provinces = new SelectList(provinces, "ProvinceID", "Province1");
}
public Office Office { get; set; }
public SelectList Provinces { get; set; }
public SelectList Vendors { get; set; }
public SelectList Languages { get; set; }
public SelectList Correspondences { get; set; }
}
EF Модель:
общественного частичного класса Офис { общественное управление() { this.ContactOffices = новый HashSet(); }
public int OfficeID { get; set; }
public Nullable<int> OfficePredefinedNumberID { get; set; }
public int OfficeTypeID { get; set; }
[LocalizedDisplayName("CompanyName")]
public string CompanyName { get; set; }
[LocalizedDisplayName("OfficeContact")]
public string OfficeContact { get; set; }
[LocalizedDisplayName("Address1")]
public string Address1 { get; set; }
[LocalizedDisplayName("Address2")]
public string Address2 { get; set; }
[LocalizedDisplayName("City")]
public string City { get; set; }
[LocalizedDisplayName("PostalCode")]
public string PostalCode { get; set; }
[LocalizedDisplayName("Phone")]
public string Phone { get; set; }
[LocalizedDisplayName("Fax")]
public string Fax { get; set; }
[LocalizedDisplayName("Email")]
public string Email { get; set; }
[LocalizedDisplayName("Language")]
public int LangID { get; set; }
[LocalizedDisplayName("PreferredCorrespondence")]
public int PreferredCorrespondenceID { get; set; }
[LocalizedDisplayName("Software")]
public int VendorID { get; set; }
public Nullable<System.DateTime> ProfileSentDate { get; set; }
public string OfficeNote { get; set; }
public int CreatedByContactID { get; set; }
public System.DateTime CreatedDate { get; set; }
public int ModifiedByContactID { get; set; }
public System.DateTime ModifiedDate { get; set; }
public int ChangeLogID { get; set; }
[DisplayName("Province")]
public int ProvinceID { get; set; }
public int StatusID { get; set; }
public virtual ICollection<ContactOffice> ContactOffices { get; set; }
public virtual Vendor Vendor { get; set; }
public virtual Province Province { get; set; }
public virtual OfficePredefinedNumber OfficePredefinedNumber { get; set; }
public virtual Status Status { get; set; }
}
Есть ли причина, по которой вы украшаете поля EF с отображаемым именем и т. Д.? Обычно отображаемое имя будет значением, которое будет отображаться на вашей модели просмотра, а не на модели. Используете ли вы их как объекты вида? Я настоятельно рекомендую сопоставлять их с viewmodel (или моделью в MVC) и вместо этого использовать это - вы не должны использовать классы сущностей в качестве объектов модели. – Charleh
Вам нужно построить классы «partial» для ваших объектов и атрибут свойств в них. –
Разве это не потребует частичных свойств? – Charleh