【问题标题】:System.Data.Entity.ModelConfiguration.ModelValidationException' occurred in EntityFramework.dll in c# consol applicationSystem.Data.Entity.ModelConfiguration.ModelValidationException'发生在 c# consol 应用程序的 EntityFramework.dll 中
【发布时间】:2017-07-28 18:41:31
【问题描述】:

我是 entityframework 的新手,我从这段代码开始,但我不知道为什么在 var count = context 行中出现异常处理程序“EntityFramework.dll 中发生 System.Data.Entity.ModelConfiguration.ModelValidationException”。 Albums.Count();

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.Entity;

    namespace entityframework1
      {
        class Program
         {
           static void Main(string[] args)
            {
              using (var context = new MusicAlbumContext())
                 {
                      var count = context.Albums.Count();
                      Console.WriteLine(count);
                      context.Albums.Add(new Album() { Name = "best", Cost = 34.43m });
                     context.SaveChanges();
                     Console.WriteLine(count);
                     Console.Read();
        }
    }
}



      public  class MusicAlbumContext:DbContext
        {
          public DbSet<Album> Albums { get; set; }
        }

     public   class Album
       {
        public string Name { get; set; }
        public decimal Cost { get; set; }
}

}

【问题讨论】:

  • 异常中应该还有很多信息,它说了什么?
  • 我敢打赌这与您的模型没有 id 有关。添加 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int id { get;放; }
  • @knuturO 是的,这是真的;非常感谢;我应该在 Album 类中定义一个 Id 字段
  • @KnuturO EF 应该自动执行此操作(至少在 v6 中是这样,我假设是 v4)

标签: c# entity-framework-4


【解决方案1】:

你需要做以下过程

class Program
     {
       static void Main(string[] args)
        {
          using (var context = new MusicAlbumContext())
             {
                  var count = context.Albums.Count();
                  Console.WriteLine(count);
                  context.Albums.Add(new Album() { Name = "best", Cost = 34.43m });
                 context.SaveChanges();
                 Console.WriteLine(count);
                 Console.Read();
    }
}

}

  public  class MusicAlbumContext:DbContext
    {
      public MusicAlbumContext()
        : base("connectionstring")
    {

    }
    static MusicAlbumContext()
{
    Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MusicAlbumContext>());
}
      public DbSet<Album> Albums { get; set; }
    }

 public   class Album
   {
    public string Name { get; set; }
    public decimal Cost { get; set; }

}

之后运行以下命令 启用迁移上下文名称 添加迁移 InitialCreate 更新数据库 -verbose -fource

【讨论】:

  • 你为什么认为这会产生任何影响?
猜你喜欢
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多