【发布时间】:2020-07-07 19:22:51
【问题描述】:
我最近重新访问了我的网站,不得不从 ASP.net MVC (DBF) 核心 2.0 升级到 2.1。 由于这样做,我收到以下错误...
SqlException:列名“MovieTitleId”无效。列名“MovieTitleId”无效。
但在我的代码或数据库的任何部分中都没有“MovieTitleId”这样的字段。
该错误仅在站点访问“多表”场景时发生 (在数据库中与 FK 建立了一对多的关系。电影 > 场景)
这是场景类..
public partial class Scene
{
[Key]
public int SceneId { get; set; }
[ForeignKey("TitleId")]
public int? TitleId { get; set; } // foreign key from Movie
[ForeignKey("LocationSiteId")]
public int? LocationSiteId { get; set; }
[ForeignKey("LocationAliasId")]
public int? LocationAliasId { get; set; }
public string Notes { get; set; }
public int? SceneOrder { get; set; }
public string TitleList { get; set; }
public LocationAlias LocationAlias { get; set; }
public LocationSite LocationSite { get; set; }
public Movie Movie { get; set; }
}
这是电影类,它在“一侧”并在典型的“主/细节”类型的网页上调用场景......
public partial class Movie
{
public Movie()
{
Scenes = new HashSet<Scene>();
}
[Key]
public int TitleId { get; set; }
[Required]
public string Title { get; set; }
[DisplayName("Title")]
public string ParsedTitle { get; set; }
[DisplayName("Year")]
public int? TitleYear { get; set; }
public string ImdbUrl { get; set; }
public string Summary { get; set; }
public bool? ExcludeTitle { get; set; }
public bool? Widescreen { get; set; }
[DisplayName("Title")]
public override string ToString()
{
return Title + " (" + TitleYear + ")";
}
public ICollection<Scene> Scenes { get; set; }
}
MoviesController.cs 中出现错误...
Movie movie = _context.Movies.Find(id);
ViewBag.Scenes = _context.Scenes
.Where(s => s.TitleId == id)
.Include(s => s.LocationSite)
.Include(s => s.LocationSite.LocationPlace)
.OrderBy(s => s.SceneOrder).ToList();
在我升级到核心 2.1 之前,一切正常。 我什至不记得曾经有一个名为“MovietitleId”的字段实际上是“TitleId”。 错误消息是否以某种方式连接了模型“电影”和列“TitleId”?
【问题讨论】:
-
你的
View里有什么东西会扔这个吗?我已经有一段时间没有完成 MVC 代码了。 -
如果可能,请显示分享您的模型快照
标签: c# sql asp.net-core