【问题标题】:Generating Data Annotations from Generated Classes从生成的类生成数据注释
【发布时间】:2010-02-24 23:49:38
【问题描述】:

我有一个 linq to sql 对象或必要的实体框架对象。

我想为他们做 MVC 2 Data Annotations,但我懒惰到不行。

有没有办法自动生成数据注释a-la

[Bind(Include = "Title,Description,EventDate,Address,Country,ContactPhone,Latitude,Longitude")]
[MetadataType(typeof(Dinner_Validation))]
public partial class Dinner
{
    public bool IsHostedBy(string userName)
    {
        return HostedBy.Equals(userName, StringComparison.InvariantCultureIgnoreCase);
    }

    public bool IsUserRegistered(string userName)
    {
        return RSVPs.Any(r => r.AttendeeName.Equals(userName,     StringComparison.InvariantCultureIgnoreCase));
    }
}

public class Dinner_Validation
{
    [Required(ErrorMessage = "Title is required")]
    [StringLength(50, ErrorMessage = "Title may not be longer than 50 characters")]
    public string Title { get; set; }

    [Required(ErrorMessage = "Description is required")]
    [StringLength(265, ErrorMessage = "Description may not be longer than 256 characters")]
    public string Description { get; set; }

    [Required(ErrorMessage = "HostedBy is required")]
    public string HostedBy { get; set; }

    [Required(ErrorMessage = "Address is required")]
    public string Address { get; set; }

    [Required(ErrorMessage = "Country is required")]
    public string Country { get; set; }

    [Required(ErrorMessage = "Phone# is required")]
    public string ContactPhone { get; set; }
}

这样我就不必自己动手了?

【问题讨论】:

  • 这是个好主意。当您考虑它时,通过设计您的表(LINQ 对象),您已经指定了字段长度而不是 NULL? (必需)每个字段的选项。因此应该有一种方法可以轻松地从数据库结构中自动生成所有这些元信息并将其泵入准备好滚动的 DataAnnotations。然后你可以根据需要快速修改/调整它们..
  • 有一群人试图这样做:(我不隶属)ef4templates.codeplex.com

标签: asp.net-mvc-2 data-annotations asp.net-mvc-2-validation


【解决方案1】:

我认为生成数据注释是多余的。

相反,我建议编写一个关联的元数据提供程序,它只会导致 MVC 模型绑定和验证查看您的类型的正确元数据,而根本不需要数据注释(或将补充您可能已经拥有的任何数据注释) .

There's an example here.

【讨论】:

    【解决方案2】:

    为此我从我的 Silverlight 工具箱中借了一点,但它似乎对 VS2010 中的 MVC3 工作得很好。

    1. 编译您的项目。如果您刚刚创建了实体框架模型,这一点很重要。
    2. 右键单击您的项目。单击添加/新项目。
    3. 选择“域服务类”作为类型。点击添加。
    4. 在下拉列表中选择您的型号。
    5. 在实体列表中,选择要为其添加数据注释的所有对象。
    6. 选中标有“为元数据生成关联类”的框。点击确定。
    7. 您将生成两个类。只需删除没有.metadata 的那个。标记。

    应该这样做。您现在应该有一个准备好添加注释的元数据类。 (上面使用的域服务类可能是随 VS2010 中的 WCF RIA 服务工具包一起安装的。对此并不乐观,但如果您的可用项目列表中没有这个,那可能就是问题所在。)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 2016-01-03
    • 2011-07-23
    • 2016-10-27
    • 2010-09-22
    • 2011-06-14
    • 2020-08-10
    相关资源
    最近更新 更多