c# - 修改 DAL 时出错,System.ArgumentException, "An entry with the same key already exist"

标签 c# sql-server-2008 asp.net-mvc-4 entity-framework-5

好吧,我完全被这个难住了。我可能没有足够的信息发布在这里,但我什至不知道从哪里开始寻找。 我正在尝试在我的 DAL.edmx 文件上“从数据库更新模型”。我在之前未包含的 View 中包含了一个字段。我尝试刷新,然后我尝试重命名数据库中的 View 并从 DAL 中删除该 View ,以便我可以重新添加它。两次我都得到了

enter image description here

接下来,我无缘无故地尝试将重命名的 View 添加到 DAL 中,但出现了同样的异常。从 DAL.tt 中手动删除没有帮助。用谷歌搜索问题,只有 2 个不相关的结果。我什至不知道从哪里开始寻找。

我没有写它,但这里是 View 的源 sql(如果有帮助的话)。 EF 不会添加重命名的 View 这一事实暗示它可能与 SQL 相关? SQL 在 mngmnt studio 中运行良好。

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

如有任何建议,我们将不胜感激。

更新:使用相同的 SQL 创建了全新的 View ,通过相同的方法将其添加到 DAL,出现相同的错误。

最佳答案

我遇到了完全相同的问题。正如我所注意到的,问题出现在 .edmx 文件与 Subversion 合并之后。在文本编辑器中查看 .edmx 文件,我发现了一个重复的 EntitySetMapping 条目。手动删除重复后,问题解决! 希望这有帮助

关于c# - 修改 DAL 时出错,System.ArgumentException, "An entry with the same key already exist",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783135/

相关文章:

sql-server-2008 - T-SQL 子字符串 - 分隔名字和姓氏

sql-server-2008 - 注册服务器存储在哪里?

.net - MVC4 HTTP 错误 403.14 - 禁止

sql-server - 不允许对系统目录进行临时更新

asp.net-mvc - WebAPI HttpContext 缓存 - 有可能吗?

c# - NLog 正在写入文件而不是数据库表

c# - 使用 Google Maps API 的应用程序

c# - 如何在 Asp.NET Core 中呈现不同的布局

c# - Entity Framework : Create database column without property in model class

c# - 如何更改太大的文件(收到来自 StyleCop 的警告)?