使用 MVC2 和 EF4 进行自定义验证

发布于 2024-08-30 14:43:26 字数 509 浏览 9 评论 0 原文

ScottGu 的博客上是一个如何将 MVC2 自定义验证与 EF4 结合使用的示例: http:// weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

所以这里的问题是:

当VS2010中的设计器为数据库创建对象时,根据示例,您必须向该类添加 [MetadataType(typeof(Person_validation))] 注释。

但是当我更改设计器中的任何内容时,所有这些注释都会丢失。

是否可以保留对 edmx 文件的自行更改,或者是否有更好的方法将 System.ComponentModel.DataAnnotations 应用于生成的实体?

谢谢。

on ScottGu's Blog is an Example how to use MVC2 Custom Validation with EF4:
http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

So here the Problem:

When the Designer in VS2010 creates the Objects for the DB, along to the example you have to add [MetadataType(typeof(Person_validation))] Annotation to that class.

But when i change anything in the Designer all these Annotations are lost.

Is it possible to keep self made changes to the edmx file, or is there any better way of applying System.ComponentModel.DataAnnotations to the generated Entities?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执手闯天涯 2024-09-06 14:43:26

您可以使用一种松散地称为“伙伴类”的模式来完成此操作。基本上,您要做的就是使用元数据创建一个单独的类,并创建一个将生成的实体耦合到伙伴类的部分类。

举一个简单的示例,假设您有一个 Person 实体,并且您希望将 FirstName 属性设置为必需属性。这是您在生成的文件之外要做的事情:

[MedadataType(typeof(PersonMetadata))]
partial class Person { } // the other part is generated by EF4

public class PersonMetadata
{
    // All attributes here will be merged into the generated class,
    // thanks to the partial class above. Just apply attributes as usual.

    [Required]
    public string FirstName { get; set; }
}

您可以找到有关此方法的更多详细信息 此处。 ScottGu 实际上也在您链接的文章中谈到了这一点。查看标题“第 5 步:持久化到数据库”;)

You do it with a pattern loosely called "buddy classes". Basically what you do is create a separate class with your metadata, and create a partial class that couples the generated entities to your buddy class.

For a simple example, let's say you have a Person entity, and you want to set the FirstName property to be required. This is what you'd do outside of your generated files:

[MedadataType(typeof(PersonMetadata))]
partial class Person { } // the other part is generated by EF4

public class PersonMetadata
{
    // All attributes here will be merged into the generated class,
    // thanks to the partial class above. Just apply attributes as usual.

    [Required]
    public string FirstName { get; set; }
}

You can find more details on this approach here. And ScottGu actually talks about it too, in the article you linked to. Look under the headline "Step 5: Persisting to a database" ;)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文