2010-08-30 18 views
15

Ok, điều này có thể không liên quan đến EF. Tôi cố gắng để sử dụng tính năng mã đầu tiên và sau đây là những gì tôi đã viết: -Khung thực thể - Mong đợi chuỗi không trống cho tham số 'providerInvariantName'

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

      } 

Lớp bối cảnh: -

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

     } 
     public DbSet<Contact> contacts { get; set; } 
     public DbSet<Address> Addresses { get; set; } 
    } 

và chuỗi kết nối: -

<?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> 

Vì vậy, tên cơ sở dữ liệu là "AddressBook" và lỗi xảy ra khi tôi khởi tạo đối tượng AddressBook. Tôi thấy mọi người đề nghị thêm (providerName = "System.Data.SqlClient") vào chuỗi kết nối. Nhưng nó không hoạt động trong trường hợp của tôi. Tôi có thiếu gì ở đây không?

+0

@leppie, cảm ơn bạn đã chỉnh sửa và định dạng câu hỏi của tôi. –

Trả lời

34

Bạn nên thêm System.Data.SqlClient làm giá trị cho thuộc tính mới có tên "ProviderName". Giống như bên dưới: -

<?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> 
3

Tôi đã gặp lỗi tương tự khi tôi tải trang web của mình lên máy chủ sản xuất. Chuỗi kết nối của tôi có thuộc tính providerName. Các cuase của vấn đề là một chuỗi kết nối trong machine.config tên LocalSqlServer và một nhà cung cấp vai trò đó đã sử dụng mà chuỗi kết nối:

<roleManager> 
    <providers> 
    <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    .... 

Vì vậy, tất cả những gì phải làm là thanh toán bù trừ chuỗi kết nối và các nhà cung cấp vai trò trước khi đăng ký tôi:

<connectionStrings> 
    <clear/> 
    <add name="DbEntities" connectionString="..." providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    ... 
    <roleManager defaultProvider="DefaultRoleProvider" enabled="true"> 
    <providers> 
     <clear/> 
     <add name="DefaultRoleProvider" ... /> 
    </providers> 
    </roleManager> 
Các vấn đề liên quan