相关疑难解决方法(0)

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

我在使用代码优先方法播种数据库时遇到此错误.

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

说实话,我不知道如何检查验证错误的内容.Visual Studio向我显示它是一个包含8个对象的数组,因此有8个验证错误.

这与我之前的模型有关,但我做了一些修改,我在下面解释:

  • 我有一个名为Status的枚举,我将其更改为名为Status的类
  • 我将类ApplicantsPositionHistory更改为在同一个表中有2个外键

请原谅我的长代码,但我必须将其全部粘贴.在以下代码的最后一行中抛出异常.

namespace Data.Model
{  
    public class Position
    {
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]   
        public int PositionID { get; set; }

        [Required(ErrorMessage = "Position name is required.")]
        [StringLength(20, MinimumLength = 3, ErrorMessage = "Name should not be longer than 20 characters.")]
        [Display(Name = "Position name")]              
        public string name { get; set; }

        [Required(ErrorMessage = "Number of years is required")] 
        [Display(Name = "Number of years")]        
        public int yearsExperienceRequired { get; set; }

        public virtual ICollection<ApplicantPosition> applicantPosition { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-4 entity-framework-4.1

767
推荐指数
19
解决办法
68万
查看次数

一对多和递归关系 - 要设置的强制值

环境

  • 框架4.5
  • 实体框架6(代码优先)

模型

描述

  • MainEntity一对多ChildEntity关系
  • ChildEntity一对多的递归ChildEntity关系

代码片段中的模型

public class MainEntity
{
    public long Id { get; set; }
    public virtual Collection<ChildEntity> ChildEntities { get; set; } 
}

public class ChildEntity
{
    public long Id { get; set; }
    public MainEntity ParentMainEntity { get; set; }
    public virtual Collection<ChildEntity> ChildEntities { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

注意:ChildEntity只有一层深的ChildEntities可以作为孩子.

问题

我能够坚持这个模型.这似乎工作正常.只有一个问题.当我存储ChildEntity具有父ChildEntity.该MainEntity_id字段为空,只有ParentChildEntityId设置.我希望始终设置MainEntity_Id字段的原因是用于性能查询.

如何强制MAINENTITY_ID字段始终在更深层次设置值?

c# entity-framework ef-code-first .net-4.5 entity-framework-6

5
推荐指数
1
解决办法
219
查看次数

记录任何类型的异常的所有异常信息

我正在使用C#,ASP.NET MVC Web Api,实体框架和.NET Framework 4.0进行开发.

我有这个代码来记录异常:

public void LogCompleteException(
    string controllerName,
    string actionName,
    Exception exception)
{
    string exceptionMessage = string.Empty;

    Exception e = exception;
    if (e.InnerException == null)
        e = null;
    else
        while (e.InnerException != null) e = e.InnerException;

    if (e == null)
        exceptionMessage = exception.Message;
    else
        exceptionMessage = string.Format("{0}\n\rInnerException: {1}", exception.Message, e.Message);

    _logger.ErrorFormat(
        LogTextFormatString,
        ExceptionText,
        controllerName,
        actionName,
        exceptionMessage);
}
Run Code Online (Sandbox Code Playgroud)

但是在我的日志文件中我发现了这个:

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

当我编写'See'EntityValidationErrors'属性以获取更多详细信息.', 我只是展示了一个我没有记录重要属性的示例.

有很多例外; 但是使用我的方法,我没有记录所有相关信息,因为可能存在我没有记录的'EntityValidationErrors'等属性.

当我传递异常来记录它时,我不知道它有什么属性,我不知道如何记录它拥有的每个属性.

你知道一种完全记录异常的方法吗?我的代码与EntityValidationErrors属性或任何其他重要属性的长期异常并不长.

我正在使用log4net进行日志记录.

c# asp.net-mvc log4net entity-framework exception

5
推荐指数
1
解决办法
1220
查看次数