C# 一个或多个实体的NotMapped属性验证失败。见';实体验证错误';属性以获取更多详细信息

C# 一个或多个实体的NotMapped属性验证失败。见';实体验证错误';属性以获取更多详细信息,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,你好 我创建了一个具有[Notmapped]DataAnnotations属性的模型,并创建了另一个从该模型继承的具有相同属性的类,但我添加了所需的DataAnnotations。问题是,当我删除一个或多个实体时,我发现错误“验证失败”。有关详细信息,请参阅“EntityValidationErrors”属性 " 我的模型: [Key] [Display(AutoGenerateField = true, AutoGenerateFilter = true, Descri

你好

我创建了一个具有[Notmapped]DataAnnotations属性的模型,并创建了另一个从该模型继承的具有相同属性的类,但我添加了所需的DataAnnotations。问题是,当我删除一个或多个实体时,我发现错误“验证失败”。有关详细信息,请参阅“EntityValidationErrors”属性

"

我的模型:

        [Key]
    [Display(AutoGenerateField = true, AutoGenerateFilter = true, Description = "IDDescription", GroupName = "IDGroupName", Name = "IDName", ShortName = "IDShortName", Prompt = "IDPrompt", Order = 50, ResourceType = typeof(Resources.BaseEntity))]
    public long ID { get; set; }


    [StringLength(207, ErrorMessageResourceName = "StringTooMuch", ErrorMessageResourceType = typeof(Resources.BaseSlider))]
    [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "DetailsRequired", ErrorMessageResourceType = typeof(Resources.BaseSlider))]
    [Display(Name = "Description", ResourceType = typeof(Resources.BaseSlider))]
    public string Description { get; set; }

    [NotMapped]
    public string ShortDescription
    {
        get
        {
            if (Description.Length <= 207)
            {
                return Description;
            }
            return Description.Substring(0, 207);
        }
    }

    [Display(Name = "HasBTN", ResourceType = typeof(Resources.BaseSlider))]
    public bool HasBTN { get; set; }

    [Display(Name = "Is Image Dark")]
    public bool IsDark { get; set; }

    [Display(Name = "Link", ResourceType = typeof(Resources.BaseSlider))]
    public string Link { get; set; }

    [Display(Name ="Slider Type")]
    public long SliderTypeID { get; set; }


    [NotMapped]
    //[ImageValidation(".jpg,.png,.japg", OriginalWidth = 1920, OriginalHeight = 600)]
    [Display(AutoGenerateField = true, AutoGenerateFilter = true, Description = "ImagePathDescription", Name = "ImagePathName", ResourceType = typeof(Resources.BaseMore))]
    public virtual HttpPostedFileBase ImagePathFile { get; set; }

    #endregion

    #region Relations

    public virtual IList<BaseSliderPhotoUpload> Photos { get; set; }

    public virtual BaseLookup SliderType { get; set; }

    #endregion

    public BaseSlider()
    {
        Photos = new List<BaseSliderPhotoUpload>();
    }
在删除操作结果代码中:

  public ActionResult DeleteConfirmed(Guid id)
    {
        BaseSlider SliderObject = db.Sliders.Where(x => x.GUID == id && x.Deleted == null).FirstOrDefault();
        SliderObject.Deleted = DateTime.Now;
        SliderObject.DeletedByID = _CurrentUser.ID;

        // Delete All Photos
        DeletePhoto DeletePhoto = new DeletePhoto();



        var DeletedPhotoName = new List<string>();
        foreach (var name in SliderObject.Photos)
        {
            DeletedPhotoName.Add(name.FileName);
        }

        if (DeletePhoto.PhotoDeleted("Slider", DeletedPhotoName))
        {
            try
            {
                db.SliderPhotos.RemoveRange(SliderObject.Photos);
                db.Entry(SliderObject).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ErrorList.Add(ex.Message);
                throw;
            }
        }
        else
        {
            ErrorList.Add(DeletePhoto.ErrorMessage);
        }

        ViewBag.ErrorList = ErrorList;



        return RedirectToAction("Delete", new { id = SliderObject.GUID });
    }
public ActionResult deleteConfixed(Guid id)
{
BaseSlider SliderObject=db.Sliders.Where(x=>x.GUID==id&&x.Deleted==null)。FirstOrDefault();
SliderObject.Deleted=DateTime.Now;
SliderObject.DeletedByID=\u CurrentUser.ID;
//删除所有照片
DeletePhoto DeletePhoto=新的DeletePhoto();
var DeletedPhotoName=新列表();
foreach(SliderObject.Photos中的变量名)
{
DeletedPhotoName.Add(name.FileName);
}
if(DeletePhoto.PhotoDeleted(“滑块”,DeletedPhotoName))
{
尝试
{
db.SliderPhotos.RemoveRange(SliderObject.Photos);
db.Entry(SliderObject).State=EntityState.Modified;
db.SaveChanges();
返回操作(“索引”);
}
捕获(例外情况除外)
{
错误列表。添加(例如消息);
投掷;
}
}
其他的
{
ErrorList.Add(DeletePhoto.ErrorMessage);
}
ViewBag.ErrorList=错误列表;
返回RedirectToAction(“删除”,新的{id=slideObject.GUID});
}
我保存更改时出错

一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性

我检查后发现EntityValidationErrors是需要ImagePathFile


感谢您帮助我和我为我糟糕的英语表达歉意

您的编辑数据,因此请使用视图模型并从数据模型中删除您的
[NotMapped]
属性-我尝试了此解决方案,但它给了我错误“实体类型SlideServiceModel不是当前上下文模型的一部分。”@StephenMueckeA视图模型与EF没有关联(它放在单独的文件夹中,比如说
ViewModels
),并且您没有显示您使用的代码,因此无法判断您做错了什么。此外,错误在哪一行?编辑数据时,请使用视图模型并删除
[未映射]
数据模型中的属性-我尝试了此解决方案,但出现错误“实体类型SliderViewModel不是当前上下文模型的一部分”。@StephenMueckeA视图模型与EF没有关联(它位于单独的文件夹中-例如
ViewModels
),您没有显示您使用的代码,因此无法判断您做错了什么。另外,错误在哪一行?
  public ActionResult DeleteConfirmed(Guid id)
    {
        BaseSlider SliderObject = db.Sliders.Where(x => x.GUID == id && x.Deleted == null).FirstOrDefault();
        SliderObject.Deleted = DateTime.Now;
        SliderObject.DeletedByID = _CurrentUser.ID;

        // Delete All Photos
        DeletePhoto DeletePhoto = new DeletePhoto();



        var DeletedPhotoName = new List<string>();
        foreach (var name in SliderObject.Photos)
        {
            DeletedPhotoName.Add(name.FileName);
        }

        if (DeletePhoto.PhotoDeleted("Slider", DeletedPhotoName))
        {
            try
            {
                db.SliderPhotos.RemoveRange(SliderObject.Photos);
                db.Entry(SliderObject).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ErrorList.Add(ex.Message);
                throw;
            }
        }
        else
        {
            ErrorList.Add(DeletePhoto.ErrorMessage);
        }

        ViewBag.ErrorList = ErrorList;



        return RedirectToAction("Delete", new { id = SliderObject.GUID });
    }