删除实体导致验证错误EF6

当我尝试Produto使用存储库删除实体时遇到一个奇怪的问题

通用存储库:

public class RepositoryBase<T> : IDisposable, IRepositoryBase<T> where T : ModelBase
{
    /*Other Methods that work perfectly*/

    public virtual int Delete(int id)
    {
        try
        {
            T entity = _dataContext.Set<T>().Find(id);

            _dataContext.Set<T>().Remove(entity);

            return _dataContext.SaveChanges();
        }
        catch(DbEntityValidationException ex)
        {

        }
    }
}

实体:

public class Produto : ModelBase
{
    public virtual int? CodigoComercial { get; set; }

    [Required]
    [MaxLength(150)]
    public virtual string Nome { get; set; }

    [MaxLength(400)]
    public virtual string Ingredientes { get; set; }

    [Required]
    public virtual CategoriaProduto Categoria { get; set; }

    public Produto()
    {
        Categoria = new CategoriaProduto();
    }
}

public class CategoriaProduto : ModelBase
{
    [Required]
    [MaxLength(150)]
    public virtual string Nome { get; set; }
    [MaxLength(400)]
    public virtual string Descricao { get; set; }
    public virtual CategoriaProduto CategoriaPai { get; set; }
    public virtual IList<OpcaoIngrediente> Opcoes { get; set; }
    public virtual CorCategoriaProdutoEnum  Cor { get; set; }
    public virtual  bool Simples { get; set; }
    [MaxLength(400)]
    public string Imagem { get; set; }

    public CategoriaProduto()
    {
        Opcoes = new List<OpcaoIngrediente>();
    }
}

我发现,捕获异常,那是没有意义的,我尝试的方式删除Product,但它声称,CategoriaProduto有名称空,这是必需的。如下:

SaborFit.Data.Model.CategoriaProduto验证失败

  • Nome:必须填写Nome字段。

我不知道这个问题。如果我尝试删除CategoriaProduto,则一切顺利。

阿米尔侯赛因·梅尔瓦尔齐(Amirhossein Mehrvarzi)

我不知道您为什么要Virtual对大多数字段使用属性,这会导致延迟加载,并且显然您会在“任何操作”遇到验证错误,在该操作中您会像.Find()操作数一样调用整个实体您必须首先决定您想做什么!我不希望您使用的另一种解决方案是在保存更改时禁用验证:

context.Configuration.ValidateOnSaveEnabled = false;
context.SaveChanges();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除与EF6有多对多关系的实体记录

来自分类Dev

删除与EF6有多对多关系的实体记录

来自分类Dev

WebApi的EF6合并实体

来自分类Dev

EF6实体的通用克隆

来自分类Dev

在 EF6 中加载相关实体

来自分类Dev

如何以EF6代码优先的方式删除实体之间的关系?

来自分类Dev

删除导致 FK 异常的行后 EF6 总是 FK 异常

来自分类Dev

Breeze ContextProvider For EF6构建错误

来自分类Dev

获取POCO实体的EF6代理

来自分类Dev

实体类型没有定义键EF6

来自分类Dev

EF6包括实体中集合的引用

来自分类Dev

EF6渴望加载相关实体的单个属性

来自分类Dev

无法使用EF6和MYSQL生成实体

来自分类Dev

无法添加实体数据模型(EF6)

来自分类Dev

使用Linq返回EF6中的相关实体

来自分类Dev

在EF6中更新实体会产生主键异常

来自分类Dev

获取POCO实体的EF6代理

来自分类Dev

阻止在EF6中为特定实体生成表

来自分类Dev

更新 EF6 中的实体子集合

来自分类Dev

如何使用EF6删除1,000行?

来自分类Dev

如何使用“ Azure MFA”身份验证从Azure SQL数据库中创建数据库第一实体框架(EF6)?

来自分类Dev

将数据库优先EF6实体映射到域模型实体

来自分类Dev

EF6 - 添加属于已经持久化实体的新实体

来自分类Dev

实体框架急于在EF4和EF6中加载差异

来自分类Dev

EF6 ApplicationUser错误的多个外键

来自分类Dev

EF6:2 FK引用的错误消息

来自分类Dev

EF 6:移除实体会导致空对象

来自分类Dev

在EF6中,什么可能导致错误无法更改关系,因为一个或多个外键属性不可为空

来自分类Dev

向EF6生成的实体类添加属性