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重新加载/验证数据库中的完整模型列表及其结构,然后显示奇怪的错误。