【问题标题】:Entity Framework Code First connection实体框架代码优先连接
【发布时间】:2015-04-09 14:09:18
【问题描述】:

我在 Entity Framework6 中使用 Code First 方法连接到我的数据库时遇到了一些麻烦。

我没有连接到在 App_Data 文件夹中创建的本地数据库,而是将连接字符串设置为指向 SQL Server 中的空数据库(无表)。

这是我的连接字符串:

<add name="LiquorContext" connectionString="Data Source=.; Initial Catalog=MVC_Code_First;User ID=sa; Password=*******;" providerName="System.Data.SqlClient" />

每当在我的 ViewModel 中调用此行时,我都会收到“System.ArgumentNullException:值不能为空。 参数名称:来源”错误:

var users = context.Users.ToList();

这可能是我的 Seed 方法没有被调用,因为我在那里放置了一个断点,但从未到达?

这是我的上下文类:

public class LiquorContext : DbContext
{
    public LiquorContext()
        : base("LiquorContext")
    {

    }

    public DbSet<ExampleUser> Users;

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
    }
}

这是我的 ContextInitializer:

public class LiquorContextInitializer : DropCreateDatabaseIfModelChanges<LiquorContext>
{
    protected override void Seed(LiquorContext context)
    {
        var users = new List<ExampleUser>()
        {
            new ExampleUser { Name="a", Surname="b"},
            new ExampleUser { Name="c", Surname="d"},
            new ExampleUser { Name="e", Surname="f"},
            new ExampleUser { Name="g", Surname="h"}
        };
        foreach (var user in users)
        {
            context.Users.Add(user);
        }
        context.SaveChanges();
    }
}

这里我调用 Global.asax 文件中的初始化器:

protected void Application_Start()
    {
        Database.SetInitializer<LiquorContext>(new LiquorContextInitializer());
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }

任何帮助将不胜感激。 谢谢

【问题讨论】:

标签: asp.net asp.net-mvc entity-framework ef-code-first


【解决方案1】:

没有更多信息很难说。您是否在构造函数中为您的上下文设置了数据库初始化程序?这可能会有所帮助:

http://www.codeproject.com/Articles/794187/Various-Strategies-to-Initialize-Database-in-Entit

【讨论】:

  • 谢谢。我现在已经编辑了我的问题。查看您提供的链接。
【解决方案2】:

在我的 LiquorContext 类中,我的 DbSet 如下:

public DbSet<ExampleUser> Users;

通过添加 { get;放; } 如下,它的工作原理:

public DbSet<ExampleUser> Users { get; set; }

【讨论】:

    猜你喜欢
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多