实体框架 - 期望'providerInvariantName'参数的非空字符串

Ash*_*pta 17 .net c# ado.net entity-framework

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

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());

            }
Run Code Online (Sandbox Code Playgroud)

上下文类: -

public class AddressBook : DbContext
    {
        public AddressBook()
        { }
        public AddressBook(DbModel AddressBook)
            : base(AddressBook)
        {

        }
        public DbSet<Contact> contacts { get; set; }
        public DbSet<Address> Addresses { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

和连接字符串: -

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
    <add name="AddressBook"  connectionString="Data Source=MyMachine;Initial Catalog=AddressBook;Integrated Security=True;MultipleActiveResultSets=True;providerName=System.Data.SqlClient"/>
    </connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*pta 36

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

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
    <add name="AddressBook" providerName="System.Data.SqlClient"  connectionString="Data Source=MyMachine;Initial Catalog=AddressBook;Integrated Security=True;MultipleActiveResultSets=True;"/>
    </connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)