Явно запускает проверку в рамках сущности
Я использую Entity Framework 6 с шаблоном хранилища единиц работы. У меня все сущности сопоставлены с базой данных, используя свободный API. а также условия валидации, которые должны быть выполнены.
Теперь я искал способ явного вызова проверки для каждой сущности и нашел на странице пост в блоге http://msdn.microsoft.com/en-us/data/gg193959.aspx (см. "Явный запуск проверки").,
Я пытался вызвать Context.GetValidationErrors(), но он не проверяет ни одно из правил, которые определены с использованием свободно API.
Так что если у кого-то есть идеи по этому поводу, пожалуйста, не стесняйтесь ответить на это:)
Большое спасибо.
public AM_AssetLayoutsConfiguration(string schema = "dbo")
{
ToTable(schema + ".AM_AssetLayouts");
HasKey(x => x.ID);
Property(x => x.ID).HasColumnName("ID").IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(x => x.Name).HasColumnName("Name").IsRequired().HasMaxLength(50);
Property(x => x.IncludePCFields).HasColumnName("IncludePCFields").IsRequired();
Property(x => x.DisplayOrder).HasColumnName("DisplayOrder").IsRequired();
Property(x => x.Active).HasColumnName("Active").IsRequired();
Property(x => x.CreatedByID).HasColumnName("CreatedByID").IsRequired();
Property(x => x.CreatedDate).HasColumnName("CreatedDate").IsRequired();
Property(x => x.ModifiedByID).HasColumnName("ModifiedByID").IsOptional();
Property(x => x.ModifiedDate).HasColumnName("ModifiedDate").IsOptional();
Property(x => x.DeletedByID).HasColumnName("DeletedByID").IsOptional();
Property(x => x.DeletedDate).HasColumnName("DeletedDate").IsOptional();
Property(x => x.Deleted).HasColumnName("Deleted").IsRequired();
InitializePartial();
Вот мое беглое отображение API.
foreach (var validationResults in dbContext.GetValidationErrors())
{
foreach (var error in validationResults.ValidationErrors)
{
Debug.WriteLine(
"Entity Property: {0}, Error {1}",
error.PropertyName,
error.ErrorMessage);
}
}
Вот код, который вызывает метод validate согласно сообщению в блоге.
Обновление для присоединения сущности к контексту БД:
repository.EntityDbSet.Add(entity);
DbEntityValidationResult validationResult = repository.DbContext.Entry<TEntity>(entity).GetValidationResult();
if (validationResult.IsValid == false)
{
entityValidationResults.IsValid = false;
foreach (DbValidationError validationError in validationResult.ValidationErrors)
{
entityValidationResults.ValidationErrors.Add(new EntityValidationError() { PropertyName = validationError.PropertyName, ErrorMessage = validationError.ErrorMessage });
}
}