首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据注释还是Fluent API?支持各种ORM的最佳实践

数据注释还是Fluent API?支持各种ORM的最佳实践
EN

Stack Overflow用户
提问于 2018-04-03 10:30:45
回答 1查看 3.4K关注 0票数 2

我正在研究在我的应用程序的数据层实现一个表单--数据验证。我希望在我的数据模型中接受一个特定的字符串输入,但我很难知道如何最好地实现这一点。

我目前正在研究Fluent API (目前正在测试EF核心风格)是否会促进这一功能,或者我是否需要考虑将数据注释引入数据层模型,以确保验证可以在所有对象关系建模服务上实现。

从在线阅读来看,Fluent API是最好的操作过程,因为它从数据层移除工作负载,让数据访问层控制数据访问层,并指定数据建模的具体规则。

缺点是,我需要为其他ORM(即: NPoco)重新实现这一点,以满足这个平台的规则。

--关于问题的更多内容

我有几个类将具有外来的有文化的名称和字符串,它们可以通过使用ISO-639和ISO-3166组合的语言文化字符串来识别。(en-GB,zh-CN)

这是由数据模型中的字符串表示的。

代码语言:javascript
复制
public abstract class Alias
{
    public string Culture { get; set; }
}

在EF下,我使用OnModelCreating函数设置表。

代码语言:javascript
复制
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    var authorAlias = modelBuilder.Entity<AuthorAlias>();
    authorAlias.Property("Given").IsRequired().IsUnicode();
    authorAlias.Property("Family").IsRequired().IsUnicode();
    authorAlias.Property("Middle").IsUnicode();

    base.OnModelCreating(modelBuilder);
}

我知道.NET核心有能力提取一个使用我想要实现的本地化字符串系统的CultureInfo数组,但是我不打算让数据模型来检查这一点,而是让数据访问层验证数据。

如何确保我的预期逻辑能够实现到系统中?我是否需要更改数据注释以确保这一逻辑?

EN

回答 1

Stack Overflow用户

发布于 2021-01-24 17:15:51

这可能是一个迟来的答案,但您可以使用'Fluent验证‘-一个流行的.NET库来构建强类型的验证规则。

  1. 安装Nuget包"dotnet FluentValidation.AspNetCore“
  2. 按照下面的步骤创建一个模型验证器,它扩展了“AbstractValidator”,并根据需要创建规则。 公共类雇员{公共字符串名{ get;set;}公共字符串EmployeeId { get;set;}公共类EmployeeValidator:AbstractValidator { public EmployeeValidator() { RuleFor(x => x.Name).NotEmpty().WithMessage("Employee Name不能为空“);RuleFor(x => x.EmployeeId).NotEmpty();}}
  3. FluentValidation支持与ASP.NET Core2.1或3.1 (推荐的3.1)集成。一旦启用,MVC将使用FluentValidation来验证由模型绑定基础结构传递给控制器操作的对象。

有关如何将其用于ASP.NET核心的更多信息可以在这里找到- https://docs.fluentvalidation.net/en/latest/aspnet.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49627834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档