所以我对MVC和实体框架都很陌生。读了一下后,我发现将实体放在Models文件夹中是很典型的。现在,例如,实体有一个名为Employee的表。现在我想添加一个模型来指定Employee表的元数据,我想将其称为Employee.cs。但是,在entity.edmx中已经有一个Employee.cs文件,我无法为我的元数据创建Employee.cs文件。
我应该采取另一种方式吗?模型的不同命名约定或将实体放在不同的位置?
答案 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
,并将所有元数据放在每个单独的类中。这使得关注点的分离相对容易,因为您将能够区分哪个元数据与哪个类相关。