Entity framework ef5数据库第一数据注释
我正在用VS2012启动MVC4。我还将EF5与创建类的“数据库优先”方法结合使用 但是,由于生成的眼镜可以重新生成,我无法将数据注释细节用于协助验证 我见过一些使用元数据和分部类的代码片段,但我想知道是否有人知道一个小的可编译示例,我可以查看并分析它,以便更好地理解vasious类是如何相互关联的 非常感谢你的帮助。Entity framework ef5数据库第一数据注释,entity-framework,visual-studio-2012,data-annotations,ef-database-first,Entity Framework,Visual Studio 2012,Data Annotations,Ef Database First,我正在用VS2012启动MVC4。我还将EF5与创建类的“数据库优先”方法结合使用 但是,由于生成的眼镜可以重新生成,我无法将数据注释细节用于协助验证 我见过一些使用元数据和分部类的代码片段,但我想知道是否有人知道一个小的可编译示例,我可以查看并分析它,以便更好地理解vasious类是如何相互关联的 非常感谢你的帮助。 Dave通过扩展模型,您可以实现所需的功能。假设EF为您生成了以下实体类: namespace YourSolution { using System; usin
Dave通过扩展模型,您可以实现所需的功能。假设EF为您生成了以下实体类:
namespace YourSolution
{
using System;
using System.Collections.Generic;
public partial class News
{
public int ID { get; set; }
public string Title { get; set; }
public int UserID { get; set; }
public virtual UserProfile User{ get; set; }
}
}
您需要做一些变通,以保留您的数据注释和属性。因此,请遵循以下步骤:
首先,在某些地方(无论您想在哪里,但最好在模型中)添加两个类,如下所示:
namespace YourSolution
{
[MetadataType(typeof(NewsAttribs))]
public partial class News
{
// leave it empty.
}
public class NewsAttribs
{
// Your attribs will come here.
}
}
然后将您想要的属性和属性添加到第二个类-NewsAttribs
此处:
public class NewsAttrib
{
[Display(Name = "News title")]
[Required(ErrorMessage = "Please enter the news title.")]
public string Title { get; set; }
// and other properties you want...
}
注意事项:
1) 生成的实体类和您的类的名称空间必须相同-此处YourSolution
2) 您的第一个类必须是partial
,其名称必须与EF生成的类相同
通过此过程,您的属性再也不会丢失…您希望执行什么样的验证,以及您在考虑什么样的验证机制(自定义验证属性、IValidatableObject等)?我认为您有一些选项(伙伴类、部分类、更新T4模板),这取决于您想要验证的内容和验证方式。很抱歉没有尽快回复,但我没有收到电子邮件通知。基本上,我想要使用的验证类型是标准的[Required]etc数据注释验证,以便视图可以自动使用它。非常感谢您的回复。DaveI认为你需要看看buddy的课程。看看这里:,和(搜索“buddy”)非常感谢你的Pawel。从快速查看(并尝试将项目更新为VS2012)来看,它正是我所需要的。我将在稍后进行更多的实验。我本来打算提交一个编辑,但我不能提交,因为编辑至少不会有6个字符长。无论如何,在上一个代码示例中,类名应该是NewsAttribs而不是NewsAttrib。