模型文件夹中的实体和重复的类名称

时间:2016-08-18 19:46:24

标签: asp.net asp.net-mvc entity-framework

所以我对MVC和实体框架都很陌生。读了一下后,我发现将实体放在Models文件夹中是很典型的。现在,例如,实体有一个名为Employee的表。现在我想添加一个模型来指定Employee表的元数据,我想将其称为Employee.cs。但是,在entity.edmx中已经有一个Employee.cs文件,我无法为我的元数据创建Employee.cs文件。

我应该采取另一种方式吗?模型的不同命名约定或将实体放在不同的位置?

2 个答案:

答案 0 :(得分:0)

如果元数据应存储在数据库表中,只需将属性添加到实体。 如果有计算或扩展属性,那么您有模型实体。实体映射到表行。 我的实体通常带有前缀字母: 实体t_students,模型Student。 然后你可以在实体和模型之间映射(甚至可以考虑AutoMapper)。

答案 1 :(得分:0)

正如Shyju在评论中所说,您可以使用部分类来实现您想要实现的目标。

例如,您将拥有域模型员工。然后,您将获得员工 MetaData 类。

您的域模型和MetaData类都应该位于Models文件夹下。

在您的.edmx文件下,您的域模型应该存在,那么您的MetaData应该是一个单独的类。

所以说这就是你需要做的事情:

域名模型

 public partial class Employee
 {
     public int ID { get; set; }
     public string FirstName { get; set; }
     public string LastName { get; set; }
     public DateTime DOB { get; set; }
     public int Age { get; set; }
 }

元数据模型/类

using System.ComponentModel.DataAnnotations;

[MetadataType(typeof(MetaDataEmployee))]
public partial class Employee
{

}

public class MetaDataEmployee
{
    public int ID { get; set; }

    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Display(Name = "Last Name")]
    public string LastName { get; set; }

    [Display(Name = "Date of Birth")]
    public DateTime DOB { get; set; }

    [Display(Name = "Age")]
    public int Age { get; set; }
}

希望这有帮助!

<强>更新

关于你在评论中的回答。我将我的文件夹命名为MetaData.cs,并将所有元数据放在每个单独的类中。这使得关注点的分离相对容易,因为您将能够区分哪个元数据与哪个类相关。