我是否可以访问EF 6 Fluent API元数据,以便在实体框架之前验证我的保存



我使用的是实体框架6,POCO,代码优先。

在我的DbContextOnModelCreating上,我使用modelBuilder参数来设置各种元数据,比如是否需要我的字段、最大长度等等。

// please ignore syntax errors. I'm writing this by heart
public void OnModelCreating(ModelBuilder modelBuilder) 
{
    modelBuilder.Entity<Contact>().Property(m => m.Name).IsRequired().HasMaxLength(30);
}

然而,我有一个ContactsService,它有一个名为Save的方法。Save调用一个名为ValidateSave的内部方法。

问题是:我可以很容易地手动实现ValidateSave方法。那会很有魅力。但我确实想要一种方法来重用我在OnModelCreating方法上设置的所有配置。

我知道,如果我调用SaveChanges,EF的验证将触发一个异常,其中包含我需要的所有信息。然而,我在嘲笑存储库层,所以我不能依赖单元测试中的这些异常。

问题:我是否可以访问Entity Framework Fluent API元数据,以便在使用Entity Framework之前验证我的保存?

您可以使用GetValidationResult方法:

using (var context = new MyContext())
{
    var myEntity = new MyEntity();
    var validationResult = context.Entry<MyEntity>(myEntity).GetValidationResult();
}

相关内容

  • 没有找到相关文章

最新更新