Dar*_*oki 5 c# sql-server-2008 asp.net-mvc-4 entity-framework-5
好吧,我完全被这个困扰了.我可能没有足够的信息在这里发布,但我甚至不知道从哪里开始寻找.我正在尝试在DAL.edmx文件上"从数据库更新模型".我将一个字段包含在之前未包含的视图中.我尝试刷新,然后我尝试重命名数据库中的视图并从DAL中删除视图,以便我可以重新添加它.我有两次
接下来,我无缘无故地尝试将我重命名的视图添加到DAL中,得到了相同的异常.从DAL.tt手动删除没有帮助.谷歌搜索问题,只有2个不相关的结果.我不知道哪里开始寻找.
我没有写它,但这里是视图的源sql(如果它有帮助).EF不会添加重命名的视图这一事实暗示它可能与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
Run Code Online (Sandbox Code Playgroud)
任何建议,将不胜感激.
更新:使用相同的SQL创建品牌打屁股新视图,然后通过相同的方法将其添加到DAL,同样的错误.
ced*_*bal 11
我有完全相同的问题.正如我注意到的那样,在将.edmx文件与Subversion合并之后出现了这个问题.在文本编辑器中查看.edmx文件,我发现了一个重复的EntitySetMapping条目.手动删除副本后,问题解决了!希望这可以帮助
小智 5
我遇到了完全相同的问题,并在上面 cedenbal 的答案中找到了解决方案的线索 - 重复的 EntitySetMapping 条目。问题是:如何在近 3Mb、包含 250 多个表的 EDMX 中找到它/它们。解决方案是 (a) 在 Visual Studio 中对 EDMX 类型的文件的“EntitySetMapping Name=”运行“查找全部”。这产生了 250 多个条目的列表(如预期),但不是以任何我可以发现重复项的顺序排列的。因此,(b) 将该列表剪切并粘贴到 Notepad++ 中,运行一个宏来删除干扰,只留下表名,(c) 将该列表剪切并粘贴到 Excel 中,然后对其进行 AZ 排序。然后 (d) 仔细观察列表以查找重复项。发现整个部分包含 8 个重复的 ESM!删除它们,保存 EDMX,在 Visual Studio 中重新加载 EDMX,重新运行“从数据库更新”,然后宾果游戏。
小智 5
删除/添加不适合我当前的项目。
用一次性小程序解决了这个问题,用于查找重复的映射条目
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace EntityModelHelper
{
class Program
{
static void Main(string[] args)
{
// path to edmx file
var filesPath = @"SamePath\Model.edmx";
var lines = File.ReadAllLines(filesPath);
var searchNames = new List<string>();
foreach (var line in lines)
{
var searchString = "<EntitySetMapping Name=";
if (line.Contains(searchString))
{
var tmp = line.Substring(line.IndexOf(searchString) + searchString.Length+1);
var searchName = tmp.Substring(0, tmp.IndexOf("\""));
searchNames.Add(searchName);
}
}
foreach (var duplicateName in searchNames.GroupBy(x => x).Where(x => x.Count() > 1))
{
Console.WriteLine(duplicateName.First());
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道这是否有帮助,因为我不知道足够的知识来理解它,但我碰巧看到部分类 vw_BillingIssues.cs 实际上确实有额外的字段。我对术语“vw_BillingIssues”进行了整个解决方案的搜索,并将额外的字段添加到任何缺少它的列表或集合中(几乎在其他地方),重建解决方案并成功!我确实注意到某处提到视图的基础表没有定义主键,但不记得我在哪里看到的。
| 归档时间: |
|
| 查看次数: |
3542 次 |
| 最近记录: |