C# 一个或多个实体的NotMapped属性验证失败。见';实体验证错误';属性以获取更多详细信息
你好 我创建了一个具有[Notmapped]DataAnnotations属性的模型,并创建了另一个从该模型继承的具有相同属性的类,但我添加了所需的DataAnnotations。问题是,当我删除一个或多个实体时,我发现错误“验证失败”。有关详细信息,请参阅“EntityValidationErrors”属性 " 我的模型: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
[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 });
}