实体框架实体完整性

| 我想在保存时验证每个实体。也就是说,我在每个实体类中都有一些自定义C#函数来验证数据。 我怎样才能做到这一点?我不想使用数据库约束,因为它们无法表达我的约束。 我应该实现一些接口吗???     
已邀请:
        实体框架3.5和4.0甚至提供了称为“ 0”的名称。实体框架4.0和4.1具有虚拟的“ 1”方法(如上所述)。 您可以重写方法或使用事件处理程序,并为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();
}
您可以使用由实体实现的自定义界面,该界面将公开“ 4”方法。     
        从EF 4.0开始,ObjectContext.SaveChanges方法是虚拟的。覆盖此方法并验证那里的所有实体。 http://msdn.microsoft.com/en-us/library/dd395500.aspx 遍历上下文中的所有实体(不是删除的实体:)。使用ObjectStateManager可以访问上下文中的实体。 希望这会有所帮助,并致以最诚挚的问候, http://www.testmaster.ch/EntityFramework.test     

要回复问题请先登录注册