SqlException:无效的列名称'ClientId1'

时间:2019-04-17 09:07:24

标签: sql-server asp.net-core

在SQL Server中为一个带有ClientId(int,外键)的表。运行程序,一切正常。 将列重命名为ClientID(大写ID)。导入模型ASP.NET MVC Core

Scaffold-DbContext "Server=DESKTOP-XYZ;Database=MyDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force

并运行程序,我收到错误无效的列名'ClientId1'。

  • 在整个项目中找不到ClientId1

  • 重建无效

  • 将ClientId1(临时)添加到数据库将给出有关“ ClientId2”等的错误。...

  • 无法创建数据库

  • 退出/启动VS2017无效

  • SQL Server分析器显示带有“ ClientId1”的语句

在一个简单的语句上获取错误(对于我进行更改的表):

var projectList = await context.Project.ToListAsync();

SQL Server分析器显示

SELECT [p].[ID], [p].[ClientID], [p].[ClientId1], [p].[Description], [p].[ExpirationDate], [p].[ImageDirectory], [p].[Name], [p].[Price], [p].[Size], [p].[StartDate], [p].[StatusID], ... 
FROM [Project] AS [p]

(正确)生成的Project类类似于(没有ClientId1):

...
public int Id { get; set; }
public int? ClientId { get; set; }
public string Description { get; set; }
public DateTime ExpirationDate { get; set; }
public string ImageDirectory { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int Size { get; set; }
public DateTime StartDate { get; set; }
public int StatusId { get; set; }
...

如何解决此问题,谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

该问题与列的重命名无关。在大约同一时间,将属性添加到NOT生成的部分Client类中:

public partial class Client
{
    ...
    public List<Project> ProjectList { get; set; }
    ...
}

这似乎使Linq感到困惑。需要一个额外的[NoMapped] DataAnnotation。因此,以下代码将起作用。

public partial class Client
{
    ...
    [NoMapped]
    public List<Project> ProjectList { get; set; }
    ...
}