MVC模型属性被覆盖

时间:2013-11-08 14:42:59

标签: asp.net-mvc entity-framework

我在我的模型(由EF生成)字段周围添加了一些属性(例如:[DisplayName(“Office Contact”)]) 当我从数据库更新我的模型时,我的模型类被重新生成,显然我失去了这些属性。

有解决方法吗?

感谢。

这是我在EF模型中使用属性的原因:

EF模型:Office.cs 我的ViewModel:NewOfficeViewModel.cs

但Office是我的viewModel的属性;所以我不得不把办公室属性的属性放在一边。

这被认为是错误的做法吗?我应该在我的视图模型类中重复我需要的EF模型类属性并手动映射它们吗?听起来很重复...

感谢您的帮助。

这是我的代码:

视图模型:

公共类NewOfficeViewModel     {         private UnitOfWork unitOfWork = new 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 = new 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; }
}

1 个答案:

答案 0 :(得分:1)

您不应该在视图中使用实体框架对象/类。您应该创建一个视图模型(基本上将属性从您的实体映射到模型/视图模型)并将其绑定到视图。你也避免这样的问题。 你在某种程度上打败了MVC的目的 - 建筑的模型部分