实体框架6没有创建数据库

本文关键字:创建 数据库 框架 实体 | 更新日期: 2023-09-27 18:15:20

你们好,我使用实体框架6代码首先从我的模型创建一个数据库,当我的程序第一次运行。要做到这一点,我在"Global.asax.cs"中初始化我的模型上下文,但是当我运行程序时,我得到这个错误:

初始化字符串的格式不符合从索引0开始的规范。

请帮帮我,伙计们。确实有很多关于这个错误的堆栈溢出的帖子,但是在我读过的所有帖子中,它们都需要web中现有的连接字符串。配置文件。但在我的情况下,我没有创建数据库,并试图连接到它。我所拥有的是一个现有的模型,并期望EF 6在程序首次运行时创建并初始化数据库。

我在网上试过了。配置,但没有结果。

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb"/>
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

这是我的全局。asax文件:

        public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                GlobalConfiguration.Configure(WebApiConfig.Register);
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
            using (var context = new MultiTenantContext())
            {
                var tenants = new List<Tenant>()
                {
                    new Tenant()
                    {
                        Id = 1,
                        Name = "COG",
                        DomainName = "www.ChurchOfGod.com",
                        Default = true
                    },
                    new Tenant()
                    {
                        Id = 1,
                        Name = "DIV",
                        DomainName = "www.developers.com",
                        Default = false
                    },
                    new Tenant()
                    {
                        Id = 3,
                        Name = "CW",
                        DomainName = "www.carwash.com",
                        Default = false
                    },
                 };
                    context.Tenants.AddRange(tenants);
                    context.SaveChanges();
              }
           }
        }

这是我的模型上下文和模型类:

    public class MultiTenantContext : DbContext
    {
        public DbSet<Tenant> Tenants { get; set; }
    }
    public class Tenant
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string DomainName { get; set; }
        public bool Default { get; set; }
    }

这是我的控制器:

    public class TenantController : Controller
    {
        public ActionResult Index()
        {
            using (var context = new MultiTenantContext())
            {
                var tenants = context.Tenants.ToList();
                return View(tenants);
            }
        }
    }

实体框架6没有创建数据库

将您的模型编辑为:

namespace WebApp.Models
{
    public class MultiTenantContext : DbContext
    {
        public MultiTenantContext() : base("DB")
        {
        }
        public DbSet<Tenant> Tenants { get; set; }
    }
}

添加到web。Config> configuration:

<connectionStrings>
    <add name="DB" connectionString="data source=.'sqlExpress;initial catalog=XXX;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
  </connectionStrings>