gpt4 book ai didi

asp.net - Visual Studio或插件中是否有工具可以自动创建伙伴类验证?

转载 作者:行者123 更新时间:2023-12-02 04:12:18 25 4
gpt4 key购买 nike

斯科特·汉塞尔曼(Scott Hanselman)的书向我介绍了如何创建NerdDinner MVC应用程序。

为了验证由实体数据模型向导生成的实体类型Dinner,他首先通过使用部分类技巧扩展了实体Dinner,然后使一个伙伴类与Dinner相关联。

有关详细信息,请参见以下代码。

using System.ComponentModel.DataAnnotations;

namespace NerdDinner.Models
{
[MetadataType(typeof(DinnerValidation))]
public partial class Dinner { }

public class DinnerValidation
{
[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(256, ErrorMessage = "Description may not be longer than 256 characters")]
public string Description { get; set; }

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

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

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

我的问题是

有没有一种“便捷的”方式来创建伙伴类并将其与Dinner相关联?我的意思是我们可以使用Visual Studio中的工具或任何插件来创建好友类,并将好友与Dinner自动关联。当然,我应该对生成的代码进行一些调整以满足我的需要,但这不是一个大问题。

编辑1:
我将添加一些其他信息。实体数据模型向导很有用,因为它基于数据库架构创建架构验证。例如,默认情况下,DinnerId属性将设置为Int32,以匹配DinnerDateID列的类型。

最佳答案

使用实体数据模型向导是不可能的。但是您可以做的是扩展Generator(生成实体的.tt文件),并让其添加[MetadataType(typeof(<#classname#> Validation))]。这样,所有生成的实体都已经准备好进行伙伴分类了……那么,您不必建立单独的局部类即可建立关联。接下来,您可以手工创建伙伴类,或者最终在“Microsoft”生成的实体旁边生成它们,这些实体是单独的文件或所有伙伴类在一起的一个文件。我们使用与您在自我跟踪实体中描述的方法相同的方法。首先,它只是一点点工作。但这确实值得。因为您获得了可以在任何给定点进行验证的坚如磐石的类:客户端,服务层,业务访问层等,所以还必须从数据库中设置所有验证条件。我们已经研究了从.edmx生成此内容的方法,但是发现为30多个类手动指定它们更具吸引力。需要几个小时的工作,但是之后是放映时间! ;)在自动生成的验证标准下,可能比生成的伙伴类更难维护,但是到处都是权衡(花费几天/周来扩展标准模板)。祝好运!

关于asp.net - Visual Studio或插件中是否有工具可以自动创建伙伴类验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com