gpt4 book ai didi

c# - Entity Framework 实体完整性

转载 作者:行者123 更新时间:2023-11-30 14:02:14 34 4
gpt4 key购买 nike

我想在保存时验证每个实体。也就是说,我在每个验证数据的实体类中都有一些自定义 C# 函数。

我该怎么做?我不想使用数据库约束,因为它们无法表达我的约束。

我应该实现一些接口(interface)吗???

最佳答案

Entity Framework 3.5 和 4.0 提供甚至称为 SavingChanges。 Entity Framework 4.0 和 4.1 具有虚拟的 SaveChanges 方法(如前所述)。

您可以覆盖方法或使用事件处理程序并为 3.5 和 4.0 编写如下代码:

var entities = context.ObjectStateManager
.GetObjectStateEntries(EntitiState.Modified | EntityState.Added)
.Where(e => !e.IsRelationship)
.Select(e => e.Entity)
.OfType<YourEntityType>();

foreach(var entity in entities)
{
entity.Validate();
}

在 DbContext API (EF 4.1) 中你必须使用

var entities = context.ChangeTracker
.Entries<YourEntityType>()
.Where(e.State == EntityState.Added || e.State == EntityState.Modified)
.Select(e => e.Entity);

foreach(var entity in entities)
{
entity.Validate();
}

您可以使用由您的实体实现的自定义接口(interface),该接口(interface)将公开Validate 方法。

关于c# - Entity Framework 实体完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394821/

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