我正在使用Entity Framework 6,POCO,Code First。

在我的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之前验证我的保存?

#1楼 票数:1 已采纳

您可以使用GetValidationResult方法:

using (var context = new MyContext())
{
    var myEntity = new MyEntity();

    var validationResult = context.Entry<MyEntity>(myEntity).GetValidationResult();
}

  ask by André Pena translate from so

未解决问题?本站智能推荐:

1回复

(首先是EF6模型)如何在不访问导航属性的情况下获取外键的值,从而无需加载整个实体?

如何在不访问导航属性的情况下获取外键的值,从而无需加载整个实体? 我在VS2012中使用Entity Framework 6 ModelFirst + DbContext。 以前,我使用旧的EF版本+ ModelFirst + ObjectContext。 我已经咬紧牙关,并通过从旧
1回复

Entity Framework Fluent API中的两个FK

我正在努力连接两个非常简单的表: LinkedItem表中有两个外键: itemId ,指向要显示其自身的表Item parentItemId ,指向表Item以显示其父项 我想完成这样的事情: 我成功创建了从Item到LinkedItem的连接:
2回复

实体框架代码第一流畅的api

我是第一次使用流畅的api。 我能够利用一对多和多对多的关系来建立关系。 但我使用一对一的关系进行澄清。 我有两个表tableA和tableB,其中tableA有两个字段 而tableB有以下字段: 我在一个单独的类中定义约束,如: 如何在代码第一种方法中定
2回复

如何使用Entity Framework 6.1返回dataReader?

正如问题所要求的那样。 我正在为我的大多数代码使用实体框架,但我还需要执行并返回不在我的实体框架上下文中的sql表中的一个或多个列。
2回复

如何创建可重用的Entity Framework投影表达式?

在我的数据库中,有几十列的表: Table MyEntity: int Id string Name string Email ...dozens of other columns I never use in this project EF生成的类具有这些额外列的属性,而简单查询会
6回复

使用Entity Framework 6.1流畅的API创建唯一索引

我有一个列“名称”,必须是unqiue。 没有外国钥匙或类似的东西。 EF 6.1最终支持通过Annotations创建此类索引。 已在SO上讨论过这个问题。 但它似乎只能通过类中的注释来完成。 如何仅使用Fluent API执行此操作? 像这样的东西:
1回复

我怎么能说EF6不插入NULL值

我在迁移中设置了deafaultValue 然后我尝试添加新对象,并且SqlProfiler向我显示查询 抛出“无法将空值插入列” 有什么办法可以在null时停止插入和更新属性? UPD:网域类别: 更新方法: 致电:
1回复

如何从 Fluent Api 检索实体配置

使用 Entity-Framework 6,我可以像这样通过 Fluent Api 设置配置: 来自这个问题 使用属性方法我可以通过反射知道什么是属性角色,但我想知道如何使用 Fluent Api 方法检索这些配置,例如Key ? EntityTypeConfiguration<>