相关疑难解决方法(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万
查看次数

EF Code First 4.1根本不支持nvarchar(max)?

我花了相当多的时间来解决这个问题,但仍然无法弄清楚为什么EF团队使用Code First让生活如此艰难.

以下是一些示例:

我的POCO:

我想要的东西看起来像:

public class Post
{
     public int Id {get; set;}
     public string Text {get; set;}
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Post>()
        .Property(p => p.Text)
        .HasColumnType("nvarchar(max)");   
}
Run Code Online (Sandbox Code Playgroud)

唯一有效的方法:

public class Post
{
     public int Id {get; set;}

     [StringLength(4000)]
     public string Text {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

问题是,在第一种情况下,我尝试插入它给我的任何东西:Validation failed for one or more entities第二种情况不适合我的商业模式.

我是唯一有这个问题的人吗?我该如何处理这件事?

orm entity-framework ef-code-first entity-framework-4.1

21
推荐指数
1
解决办法
1万
查看次数