Có thể SimpleMembership được sử dụng với EF model-first? Khi tôi dùng thử, tôi nhận được "Không thể tìm thấy Nhà cung cấp Dữ liệu Khuôn khổ .NET được yêu cầu" khi tôi gọi WebSecurity.InitializeDatabaseConnection.
Sử dụng SimpleMembership với EF model-first
Để đặt theo cách khác: Tôi không thể gọi đến số WebSecurity.InitializeDatabaseConnection
để hoạt động khi chuỗi kết nối sử dụng System.Data.EntityClient
nhà cung cấp (giống như khi sử dụng mô hình mô hình đầu tiên mô hình đầu tiên).
Để repro cố, hãy tạo một ứng dụng MVC 4, và thay thế UserProfile lớp thực thể mã đầu tiên (mà bạn nhận được miễn phí với MVC 4 mẫu) với một lớp tài mô hình đầu tiên mà bạn có tạo ra trong thiết kế Entity:
- Tạo một ứng dụng MVC 4 trong VS 2012 và thêm một mới, trống Entity Data Model.
- Thêm đối tượng mới có tên
User
vào kiểu máy, với các trường dành choId,
UserName, and FullName
. Vì vậy, tại thời điểm này, thực thể dữ liệuUser
là ánh xạ tới bảngUsers
và được truy cập thông qua một kết nối funky chuỗi sử dụng nhà cung cấpSystem.Data.EntityClient
. - Xác minh rằng EF có thể truy cập thực thể
User
. Một cách dễ dàng để thực hiện là để dàn dựng ra một bộ điều khiển Người dùng dựa trên bảng Người dùng và DbContext liên quan của nó. - Chỉnh sửa tệp
AccountModels.cs
để xóa lớpUserProfile
và lớpUsersContext
được liên kết của nó. Thay thế các tham chiếu đến các lớp (hiện bị thiếu)UserProfile
vàUsersContext
với các tham chiếu đến lớp Người dùng mới của bạn và lớp họcDbContext
được liên kết của nó. - Chuyển cuộc gọi đến InitializeDatabaseConnection từ lớp InitializeSimpleMembershipAttribute filter thành phương thức Application_Start trong Global.asax.cs. Khi bạn đang ở đó, hãy sửa đổi các đối số để sử dụng kết nối của đối tượng Người dùng mới chuỗi, tên bảng và tên cột UserId của bạn.
- Xóa lớp (không còn được sử dụng)
InitializeSimpleMembershipAttribute
và tham chiếu đến nó.
Khi bạn chạy repro, nó sẽ nhận được một ngoại lệ tại cuộc gọi đến InitializeDatabaseConnection.
Bob
Bạn có nghĩa là thay thế công khai DbSet UserProfiles {get; bộ; } với (public DbSet userProfiles {get; set;}). Tôi là loại trong một sửa chữa với điều này –
@PeterEdike Có, đó là những gì tôi đã cố gắng để làm. Tôi đã cố gắng thay thế tất cả các công cụ đầu tiên bằng mã với công cụ đầu tiên của mình, nhưng tôi phát hiện ra rằng SimpleMembership không hoạt động với ma thuật mô hình đầu tiên trong chuỗi kết nối. Như Mario Zderic nói, giải pháp là sử dụng một cái gì đó trông giống như chuỗi kết nối mã đầu tiên. –