Asp.net mvc 2 调用SaveChanges时EF4中出现无效列名异常
我正在尝试创建一篇新文章,如下所示:Asp.net mvc 2 调用SaveChanges时EF4中出现无效列名异常,asp.net-mvc-2,exception,entity-framework-4,Asp.net Mvc 2,Exception,Entity Framework 4,我正在尝试创建一篇新文章,如下所示: Article: ArticleID - int (primary key, auto-incr) Title - nvarchar(100) Text - text LastModified - Datetime 控制器代码为: [HttpPost] public ActionResult CreateArticle(Article article) { try {
Article:
ArticleID - int (primary key, auto-incr)
Title - nvarchar(100)
Text - text
LastModified - Datetime
控制器代码为:
[HttpPost]
public ActionResult CreateArticle(Article article)
{
try
{
article.LastModified = DateTime.Now;
_siteDB.Articles.AddObject(article);
_siteDB.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
内部例外是:
{“无效的列名'Title'。\r\n无效的列名'Text'。\r\n无效的列名'LastModified'。”
不知道为什么他们会被认为是无效的。有什么想法吗?您确定您的数据库和EDM元数据仍然同步吗?我建议从数据库中更新模型,以确保您的SSDL具有数据库中的最新更改。是的,请检查您的数据库和模型是否匹配。有时我们定义一个模型来开始编程接口,而我们保持数据库表不变,那么当创建DataContext时,就会变得一团糟,并导致类似这样的奇怪错误。我只是通过阅读这个答案解决了这个问题,执行db.SaveChanges()时出现的错误是“invalid Quote”u QuoteID,原因是在数据库中我刚刚定义了Quote.QuoteID,而在模型类中我设置了所有字段。我通过在模型属性上添加注释进行了快速修复,使它们与数据库表中的单Quote.QuoteID匹配。棘手的部分是,我正在更新另一个与Quotes无关的模型(Deal,DealActivity),但我猜是在使用db.SaveChanges提交更改时,DataContext重新加载/验证数据库中的完整模型列表及其结构,然后显示奇怪的错误。