2

我有一个LINQ到SQL对象或者如果需要的实体框架对象。从生成的类生成数据注释

我想为他们做MVC 2数据注释,但我无休止地懒惰。

是否有办法来自动生成数据说明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; } 
} 

所以,我没有做这一切我自己?

+0

这是一个好主意。当你考虑它时,通过设计你的表(LINQ对象),你已经指定了字段长度和NOT NULL? (必需)选项。因此,应该有一种方法可以轻松自动生成数据库结构中的所有元信息,并将其抽入可随时滚动的DataAnnotations。然后,你可以快速修改/调整它们所需的.. – Aaron 2011-01-03 08:21:13

+0

有一群人试图做到这一点:(我不附属)http://ef4templates.codeplex.com/ – MarkKGreenway 2011-01-25 00:49:54

回答

0

我认为生成数据注释是多余的。相反,我会建议编写一个关联的元数据提供程序,它将简单地导致MVC模型绑定和验证,以便根据您的类型查看正确的元数据,而不需要数据注释(或者将补充您可能已经拥有的任何数据注释)。

There's an example here

0

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

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

应该这样做。你现在应该有一个元数据类准备添加你的注释。 (上面使用的域服务类可能与VS2010中的WCF RIA Services工具包一起安装,对此没有正面评价,但如果您在可用项列表中没有此项,则可能是问题所在。)

+0

我没有得到域服务类选项,即使从http://www.microsoft.com/en-us/download/details.aspx?id=26939安装WCF RIA Services工具包后 – IsmailS 2012-05-01 16:29:00