entity framework – 期望’providerInvariantName’参数的非空字符串

好吧,这可能与EF无关。 我正在尝试使用代码优先function,以下是我写的: –

var modelBuilder = new ModelBuilder(); var model = modelBuilder.CreateModel(); using (AddressBook context = new AddressBook(model)) { var contact = new Contact { ContactID = 10000, FirstName = "Brian", LastName = "Lara", ModifiedDate = DateTime.Now, AddDate = DateTime.Now, Title = "Mr." }; context.contacts.Add(contact); int result = context.SaveChanges(); Console.WriteLine("Result :- "+ result.ToString()); } 

上下文类: –

 public class AddressBook : DbContext { public AddressBook() { } public AddressBook(DbModel AddressBook) : base(AddressBook) { } public DbSet contacts { get; set; } public DbSet
Addresses { get; set; } }

和连接字符串: –

       

因此,数据库名称为“AddressBook”,并在初始化AddressBook对象时发生错误。 我看到有人建议在连接字符串中添加(providerName =“System.Data.SqlClient”)。 但它在我的情况下不起作用。 我在这里遗漏了什么?

您应该将System.Data.SqlClient作为值添加到名为“ProviderName”的新属性。 如下所示: –

       

当我将网站上传到生产服务器时,我遇到了同样的错误。 我的连接字符串设置了providerName属性。 问题的根源是machine.config名为LocalSqlServer的连接字符串和使用该连接字符串的角色提供程序:

    .... 

所以我所要做的就是在注册我之前清除连接字符串和角色提供者:

      ...