Đội ngũ, tôi có một ứng dụng ASP.NET MVC mà tôi đang triển khai. Khi tôi triển khai nó, ứng dụng hoạt động tốt, nhưng khi tôi gọi Membership.CreateUser
nó kết thúc bằng việc cố tạo cơ sở dữ liệu mặc dù nó đã tồn tại. Tôi cần phải làm gì để có được nó để nó không cố gắng gọi CreateMembershipEntities
vì cơ sở dữ liệu đã tồn tại?Dừng khởi tạo cơ sở dữ liệu EF cho DefaultMembershipProvider
Tôi đã thử Database.SetInitializer
cho trình khởi tạo không thực hiện điều gì, tôi đã thử xóa defaultConnectionFactory
trong Web.config - Tôi hiện không còn tùy chọn.
Tôi mong được sự giúp đỡ của bạn!
CẬP NHẬT
Tôi vừa phát hiện ra ngày hôm qua rằng lý do nó đang cố gắng để tạo ra cơ sở dữ liệu là do các máy chủ host không cho phép kết nối để truy vấn sysdatabases
và do đó cơ sở dữ liệu bao giờ tồn tại và là vì thế luôn cố gắng tạo ra nó. Có vẻ như tôi có thể phải quay trở lại với nhà cung cấp thành viên cũ của AspNet và cũng đi xa khỏi mô hình đầu tiên của mã EF.
<rant>
Trên một lưu ý cá nhân hơn, tôi muốn cho Microsoft biết, cảm ơn vì không có gì! Mô hình đầu tiên của mã này hoạt động tốt với các ứng dụng được triển khai trên các máy chủ mà bạn sở hữu - nhưng đặt chúng trong đám mây (đó là tất cả mọi thứ đang diễn ra) và bạn không may mắn. Công việc tuyệt vời của Microsoft! Tại sao không chỉ thử và thực sự kết nối với cơ sở dữ liệu để xem nó có tồn tại không?!? Nếu kết nối thành công nó phải tồn tại - nếu không thì tôi đoán là không. </rant>
"* Tôi đã thử Database.SetInitializer thành trình khởi tạo không có gì *": Cách bình thường để tắt khởi tạo DB là đặt trình khởi tạo thành 'null', tức là' Database.SetInitializer (null) '. Nhưng tôi không có ý tưởng những gì công cụ này EF đã làm với ASP.NET MembershipProvider sử dụng thủ tục lưu trữ và nó kết nối riêng (trừ khi bạn đã tùy chỉnh các nhà cung cấp bằng cách nào đó). Tôi sẽ ngạc nhiên nếu thiết lập initializer để 'null' giải quyết vấn đề. –
Slauma
@Slauma Vấn đề tôi gặp phải là nó đang cố tạo bảng thành viên khi chúng đã tồn tại trên cơ sở dữ liệu sản xuất. Tôi không có DROP và CREATE truy cập cơ sở dữ liệu trên máy chủ sản xuất. Một điều đáng chú ý ở đây là máy chủ sản xuất là GoDaddy và nhà cung cấp thành viên mà tôi đang sử dụng là DefaultMembershipProvider mà nó cấu hình trong một ứng dụng ASP.NET MVC 4 mới. Nó hoạt động rất tốt trên hộp phát triển của tôi. –