不知道为什么我的MVC Entity-Framework应用程序无法在数据库中找到元素

时间:2012-07-14 04:32:18

标签: asp.net-mvc linq entity-framework

刚刚在我的博客上发现了一些实时错误,我不清楚它们为什么会发生。如果你想看到完整的大丑消息,请转到here

给我这个问题的代码是:

    NerdlyContext db = new NerdlyContext();
    public IEnumerable<Post> GetIndexPage(int? page)
    {
        int pageSize = 5;
        int pageNumber = (page ?? 1);
        var posts = from p in db.Posts
                    where p.Published == true && p.Archived == false
                    orderby p.DateCreated descending
                    select p;
        var result = posts.ToPagedList(pageNumber, pageSize);
        return result;
    }

我试着看看测试是我做了一个快速的db.Posts.FirstorDefault(),看它是否有任何东西,但似乎它根本没有击中我的数据库。我在SSMS中打开了数据库,所有数据都是一样的。我在discountasp.net上托管并重新复制确切的连接字符串,以确保没有意外更改。还是行不通。我最近发生的唯一更改是我尝试添加更多dbset项目,但是通过包管理控制台上的错误,所以我解除了所有更改,重建了解决方案,现在我得到了这个..

更新

深入研究实例化我的DbContext时,它说更改跟踪器会抛出错误。

3 个答案:

答案 0 :(得分:1)

您的连接字符串是否正确?

您可以设置断点并检查db.Posts吗?您应该能够深入查看查询和连接字符串。也许这可以指出你正确的方向。

答案 1 :(得分:1)

可能是连接字符串的问题。您是否在DBContext类的构造函数中指定了连接字符串,如下所示:

public class YourContext : DbContext 
        { 

            public YourContext () : base("YourConnection")
            {

            }

//DBSets here
        }

“YourConnection”在web.config中设置:

<connectionStrings>
    <add name="YourConnection" providerName="System.Data.SqlClient" connectionString="....." />
  </connectionStrings>

答案 2 :(得分:0)

好吧,所以我和你们所有人都认为这是一个连接字符串问题。那些都很好。

  1. 我最终做的是从项目中删除我以前的所有迁移类。
  2. 从我的数据库中删除了MigrationsHistory文件夹。
  3. 将迁移配置更改为自动迁移
  4. 重新运行Update-Database命令。 (它给了我一个错误,说帖子已经存在)
  5. 然后根本没有信仰,我重新跑了,我的数据回来了
  6. 那么为什么它现在有用呢?我没有一点该线索......