Entity Framework Code First 连接

3

我在使用Code First方法时,遇到了连接Entity Framework6数据库的一些问题。

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

以下是我的连接字符串:

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

每当在我的ViewModel中调用此行时,我都会收到“System.ArgumentNullException:值不能为空。参数名称:source”错误。
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文件中,我调用Initializer:
protected void Application_Start()
    {
        Database.SetInitializer<LiquorContext>(new LiquorContextInitializer());
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }

非常感谢您提供的帮助。

谢谢。


可能是重复的问题:值不能为 null。参数名: source - mason
2个回答

1

在我的LiquorContext类中,我有以下的DbSet<>:

public DbSet<ExampleUser> Users;

通过添加如下的 { get; set; } ,它可以正常工作:
public DbSet<ExampleUser> Users { get; set; }

0

谢谢。我现在已经编辑了我的问题。看一下你提供的链接。 - user1269016

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接