2014-06-13 14 views
7

Tôi gặp vấn đề, tôi vừa mới bắt đầu học EF Model First và Im ở một thời điểm. Tôi đã nhận lỗi như vậy: "Một lỗi đã xảy ra khi cập nhật các mục Xem các ngoại lệ bên trong để biết chi tiết"Khung thực thể - "Đã xảy ra lỗi khi cập nhật các mục nhập. Xem ngoại lệ bên trong để biết chi tiết"

Tôi đã tạo ra một mô hình dễ dàng trên sơ đồ, tạo ra cơ sở dữ liệu và viết code dễ dàng trong C# để thêm chỉ một hàng trong bảng nhưng lỗi hiển thị mọi lúc.

tôi gửi ảnh chụp màn hình với Diagram/Tạo DLL/Simple chính/Và lỗi ném

model and stuff

Liên kết đối với kích thước lớn hơn: http://i.imgur.com/bKGc4wv.png

+0

Lỗi bên trong là gì? – TheNorthWes

+2

'Xem Ngoại lệ bên trong để biết chi tiết 'có nghĩa là những gì nó nói. Bạn đang gọi một đối tượng 'dbo.Pupils' không tồn tại. Bạn có EF đa dạng hóa các bảng của bạn cho bạn? Nếu vậy, bảng EF có thể là một cái gì đó kỳ lạ như "Học sinh". Thông thường, bảng cơ sở dữ liệu là số ít và EF được số nhiều. Và có 'dbo' trước mặt nó cũng rất kỳ quặc. – paqogomez

+1

Chuỗi kết nối của bạn có được thiết lập đúng cách để trỏ đến cơ sở dữ liệu đó không? Mã của bạn để ánh xạ các lớp của bạn tới cơ sở dữ liệu ở đâu? Vui lòng đăng mã và lưu ảnh chụp màn hình cho các dấu hiệu trực quan về những gì đang xảy ra. Chỉ cần sao chép và dán chi tiết Ngoại lệ của bạn sẽ là tốt thay vì ảnh chụp màn hình của cửa sổ đó. – krillgar

Trả lời

10

Xoay Pluralization On. Vấn đề là bạn mô hình đối tượng đang sử dụng tên số ít (Pupil) quy ước, trong khi trong cơ sở dữ liệu của bạn, bạn đang sử dụng tên số nhiều Pupils với s.

CẬP NHẬT

post Điều này cho thấy làm thế nào bạn có thể bật hoặc tắt. Một số trích đoạn liên quan của bài rằng:

Để bật pluralization và tắt

  • Trên các Công cụ trình đơn, nhấp vào Tuỳ chọn.

  • Trong hộp thoại Tùy chọn, mở rộng Công cụ cơ sở dữ liệu. Lưu ý: Chọn Hiển thị tất cả cài đặt nếu nút Công cụ cơ sở dữ liệu không hiển thị.

  • Nhấp vào O/R Designer.

  • Đặt số nhiều tên thành Đã bật = False để đặt trình thiết kế O/R sao cho không thay đổi tên lớp.

  • Set ngữ pháp số nhiều tên để Enabled = True để áp dụng quy tắc pluralization với tên lớp của các đối tượng được bổ sung vào O/R Designer.

UPDATE 2

Nhưng lưu ý rằng, bạn nên tránh tên số nhiều. Bạn có thể đọc here cách thực hiện (tôi sẽ trích dẫn ở đây, chỉ trong trường hợp liên kết bị hỏng).

(...) Khi bạn làm việc với Entity Framework Code Cách tiếp cận đầu tiên, bạn đang tạo các bảng cơ sở dữ liệu từ các lớp mô hình của mình. Thường thì Entity Framework sẽ tạo ra các bảng có tên Pluralized. điều đó có nghĩa là nếu bạn có một lớp mô hình được gọi là PhoneNumber, khung Entity sẽ tạo một bảng cho lớp này được gọi là "PhoneNumbers". Nếu bạn muốn tránh tên số nhiều và muốn tên số ít như Khách hàng, bạn có thể làm như thế này Trong lớp DBContext của bạn, Ghi đè phương thức “OnModelCreating” như thế này (...)

enter image description here

(...) Có Method Overriding này sẽ tránh tạo ra bảng với tên số nhiều. Bây giờ nó sẽ tạo ra một Bảng gọi là "PhoneNumber", Không phải "PhoneNumbers" (...)

+0

Tôi nên bật tính năng này ở đâu? – CSharpBeginner

+1

Thật không may là tôi đã kích hoạt Đa số nên không phải là vấn đề:/ – CSharpBeginner

+0

@CSharpBeginner Tôi đề nghị bạn tạo các bảng có tên số ít, và sau đó trên mã của bạn, cũng buộc các tên số ít, như được hiển thị trong hình trên. hãy thử một lần. –

4

nó có thể là nguyên nhân của việc chuyển đổi dữ liệu từ .net sang sql. ví dụ như lỗi chuyển đổi datetime.

hoàn toàn không phải là lỗi chính xác. bạn có thể thấy lỗi chính xác trong đồng hồ ở ngoại lệ.InnerException.InnerException -> ResultView.

với tôi đó là tham chiếu null cho một cột datetime

+0

Đây là những gì nó dành cho tôi. – Mickey

0

tôi phải đối mặt với lỗi tương tự: ". Một lỗi đã xảy ra khi cập nhật các mục Xem trừ nội để biết chi tiết”

Đơn giản chỉ cần Xóa và tạo lại tệp * .edmx. Báo cáo của bạn đã hoạt động đối với tôi, lỗi sẽ biến mất

+0

Điều này không thể là một giải pháp, nếu và chỉ khi nó làm việc, trong trường hợp của bạn, sau đó tôi sẽ nói đó là một hack không phải là một giải pháp. – CodeIt

0

Tôi gặp sự cố này gần đây. Điều này xảy ra, bởi vì sự cho phép của cơ sở dữ liệu người dùng. kiểm tra quyền của cơ sở dữ liệu người dùng, có thể người dùng không được phép viết trên db.

0

Tôi đang đối mặt với cùng một vấn đề và không giải pháp nào ở trên đã giúp tôi. Trong dự án Web Api 2 của tôi, tôi đã thực sự cập nhật cơ sở dữ liệu của mình và đã đặt một số unique constraint trên một số SQL table column. Điều đó thực sự gây ra sự cố. Chỉ cần kiểm tra các giá trị cột trùng lặp trước khi chèn giúp tôi khắc phục sự cố!

Các vấn đề liên quan