[asp.net-mvc]MVC 6 创建视图问题︰ 创建 DBContext,得到的模型时出错

发布时间: 2017/3/25 3:07:00
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

试图为使用导航栏模型和 NavBarEntity 下面所示 (MVC6) 的"创建"创建视图会收到此消息......

enter image description here

运行选定的代码生成器时出错︰ 创建要得到的模型的 DBVContext 实例时出错... 值不能为空。 参数名称︰ connectionString

我拿这种模式在视图向导...

public class NavBarModel
{
    public string ID { get; set; }
    public List<LinkModel> Links { get; set; }
}

此 DBContext 类如下所示...

public class NavBarEntity : DbContext
    {
        public NavBarEntity()
        {
            ID = Guid.NewGuid().ToString();
        }
        [Key]
        public string ID { get; set; }
        public DbSet<List<LinkModel>> Links { get; set; }
    }

和 LinkModel 所示。

public class LinkModel
{
    public LinkModel()
    {
        ID = Guid.NewGuid().ToString();
    }
    [Key]
    private string ID { get; set; }
    public string HREF { get; set; }
    public string Text { get; set; }
}

配置服务看起来像这样...

        var cfg2 = Configuration["Data Source=MyPC\\SQLEXPRESS;Initial Catalog=Dashboard;Integrated Security=True;Pooling=False"];
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(cfg))
            .AddDbContext<NavBarEntity>(options =>
            {
                options.UseSqlServer(cfg2);
            });

问题︰ 我到底做错了?

解决方法 1:

谢谢上面列出的帮助。

MVC6 和 EF7 的新手,命名为 ConfigureServices,该方法必须包含指向 appsetting.json 的 json 指针。 该方法是在 Startup.cs 文件中找到的。

这是服务配置以匹配上面所示的代码。括号内的字符串值指向 json 位置......

        var cfg2 = Configuration["Data:DashboardContext:ConnectionString"];
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<DashboardContext>(options =>
            {
                options.UseSqlServer(cfg2);
            })

但是,你也必须投入 appsettings.json 这样一个值︰

  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet5-TestWebApplication1-d91c23e4-3565-476d-a7c0-45665bc0c367;Trusted_Connection=True;MultipleActiveResultSets=true"
    },
    "DashboardContext": {
       "ConnectionString": "Data Source= MYPC\\SQLEXPRESS;Initial Catalog=Dashboard;Integrated Security=True;Pooling=False"
      }
  },

根本原因参数名称︰ connectionString正在空是 appsettings.json 有需要完全如上所示。 Json 解析例程必须能够找到的字符串名称/值对。请注意这些配置落下的"数据"名称,其中包含其他名称。 在这种情况下"DefaultConnection"在那里,默认情况下,又"DashboardContext"部分。

也在 MVC 6 你必须将 connectionString 类型更改为 IServiceProvider,而不是字符串之前一样......

public class DashboardContext : DbContext
{
    public DashboardContext(IServiceProvider connectionString) : base (connectionString)
    {}
  public DbSet<NavBarEntity> NavBars { get; set; }
}

唉︰ 创建视图没有问题......是的!

The Views

官方微信
官方QQ群
31647020