2015-09-25 19 views
5

OK, Im hoàn toàn bối rối với cái này. Tôi có thể không có đủ thông tin để đăng ở đây, nhưng tôi thậm chí không biết bắt đầu từ đâu. Tôi đang cố gắng "Cập nhật Mô hình từ cơ sở dữ liệu" trên tệp DAL.edmx của mình. Tôi đã bao gồm một trường vào một chế độ xem không được bao gồm trước đây. Tôi đã thử làm mới, và sau đó tôi đã thử đổi tên chế độ xem trong cơ sở dữ liệu và xóa chế độ xem khỏi DAL để tôi có thể thêm lại. Cả hai lần tôi đãLỗi sửa đổi DAL, System.ArgumentException, "Một mục nhập với cùng một khóa đã tồn tại"

enter image description here

Tiếp theo, không có lý do tôi đã cố gắng thêm cái nhìn đổi tên của tôi vào Dal, có cùng một ngoại lệ. Xóa thủ công khỏi DAL.tt không giúp được gì. Vấn đề về Googled và chỉ có 2 kết quả không liên quan. Tôi không biết bắt đầu tìm kiếm ở đâu.

Tôi không viết nó, nhưng đây là sql nguồn của chế độ xem (nếu nó trợ giúp). Thực tế là EF sẽ không thêm quan điểm được đổi tên thành gợi ý nó có thể là với SQL? SQL chạy tốt trong studio mngmnt.

SELECT  ID, IssueID, IssueTypeID, IssueText, IssueCreateDate, WeekendDate, CustomerName, Employee, 
        CONVERT(DECIMAL(6, 2), AdjustedTotalRHours, 101) AS AdjustedTotalRHours, AdjustedTotalOHours, 
        AdjustedTotalRHours + AdjustedTotalOHours AS Hours, InvoiceNumber, AdjustedInvoiceAmount, 
        COALESCE 
         ((SELECT  SUM(InvoiceAmount) AS Expr1 
          FROM   TrendingDataFinal AS I1 
          WHERE  (InvoiceNumber = T1.InvoiceNumber) AND (CompanyID = T1.CompanyID) AND 
               (CalType = 'F') AND (Aident = T1.Aident)), 0) AS TotalInvoiceAmount, InvoiceDate, 
        ROUND(DATEDIFF(DAY, InvoiceDate, GETDATE()), 0) AS DaysOutstanding, Notes, Aident, EINC, IsClosed, 
        CompanyID, 
         (SELECT  COUNT(ne.EntryID) AS Expr1 
         FROM   Madison.Notes.Note AS n INNER JOIN 
               Madison.Notes.NoteEntry AS ne ON n.NoteID = ne.NoteId 
         WHERE  (n.Key1 = T1.InvoiceNumber)) AS HasNotes, COALESCE 
         ((SELECT  TOP (1) CompanyName 
          FROM   ReportingCompanies AS I1 
          WHERE  (CompanyId = T1.CompanyID)), '') AS CompanyName, BranchName, PayStatus 
FROM   BillMan_ReportStage AS T1 

Mọi đề xuất sẽ được đánh giá cao.

CẬP NHẬT: Tạo hiệu ứng đánh đòn lượt xem mới với cùng một SQL, đã thêm nó bằng cùng một phương pháp để DAL, cùng một lỗi.

Trả lời

0

Tôi không biết nếu điều này sẽ giúp, bởi vì tôi không biết đủ để làm cho tinh thần của nó, nhưng tôi đã xảy ra để thấy rằng một phần vw_BillingIssues.cs đã làm trong thực tế có thêm trường trong đó. Tôi đã tìm kiếm toàn bộ cụm từ cho cụm từ "vw_BillingIssues" và thêm trường bổ sung vào bất kỳ danh sách hoặc bộ sưu tập nào bị thiếu (danh sách ở mọi nơi khác), xây dựng lại giải pháp và Thành công! Tôi đã nhận thấy một nơi nào đó nó đề cập đến các bảng cơ bản của xem không có một khóa chính được xác định, nhưng không nhớ nơi tôi thấy điều đó.

2

Bạn có thể có hai nút giống nhau: EntitySetMapping. Bạn nên loại bỏ một và mọi thứ sẽ ổn. Cố gắng loại bỏ tất cả ánh xạ cho chế độ xem và thêm lại chúng. Nếu điều này không có tác dụng, hãy thử xem trong khung nhìn Model Browser và trong mục Model/Entity Types. Có thể có một số thực thể bị bỏ lại trong quá trình di chuyển cũ và khi bạn cố gắng thêm một bảng có cùng khóa mà lỗi của bạn xảy ra. Hy vọng điều này sẽ giúp;]

+0

Thanx cho phản hồi, nhưng điều này là rất lớn và đã được nhiều nhà phát triển nhiều năm làm việc. Tôi sẽ không tin tưởng rằng không có thêm một số thứ trong đó. Tuy nhiên, bảng và chế độ xem này chỉ có để hỗ trợ một chế độ xem lưới trên 1 trang, không có gì khác chạm vào nó. Tôi sẽ tiếp tục thử – Darkloki

+0

Kiểm tra chỉnh sửa của tôi;] – dlght

9

Tôi đã gặp sự cố tương tự. Như tôi đã nhận thấy, sự cố đã xuất hiện sau khi hợp nhất các tệp .edmx với Subversion. Nhìn vào tập tin .edmx trong trình soạn thảo văn bản, tôi tìm thấy một mục EntitySetMapping trùng lặp. Sau khi xóa thủ công trùng lặp, sự cố đã được giải quyết! Hy vọng điều này sẽ giúp

1

Tôi đã có cùng một vấn đề và tìm ra manh mối cho giải pháp trong câu trả lời của cedenbal ở trên - các mục EntitySetMapping trùng lặp. Vấn đề là: làm thế nào để tìm thấy nó/chúng trong một EDMX gần như 3Mb với hơn 250 bảng. Giải pháp là để (a) chạy một "Tìm tất cả" trong Visual Studio trên "EntitySetMapping Name =" trên các tập tin của loại EDMX. Điều này mang lại một danh sách hơn 250 mục (như mong đợi), nhưng không phải trong bất kỳ thứ tự nào mà tôi có thể phát hiện các bản sao. Vì vậy, (b) cắt và dán danh sách vào Notepad ++, chạy một macro để loại bỏ các chaff, chỉ để lại các tablenames, (c) cắt và dán danh sách này vào Excel, và sắp xếp nó A-Z. Sau đó, (d) chỉ cần dán nhãn danh sách tìm kiếm các bản sao. Tìm thấy toàn bộ phần có chứa 8 ESM trùng lặp! Loại bỏ chúng, lưu EDMX, tải lại EDMX trong Visual Studio, chạy lại "Cập nhật từ cơ sở dữ liệu", và bingo.

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