0

我有一个 MVC3 项目,到目前为止我一直在使用 SQL Compact Edition 进行开发。我现在正试图转移到在另一台机器上运行的 SQL Server 2008 R2。我已经用 Visual Studio 连接到这个数据库并获得了一个连接字符串,我用它来替换我现有的连接字符串。

<add name="CPContext" connectionString="Data Source=CSP111;Initial Catalog=CONTESTPLATFORM;Persist Security Info=True;User ID=sa;Password=<%MY PASSWORD%>" providerName="System.Data.SqlClient" />
<!--Old Connection String
<add name="CPContext" connectionString="Data Source=|DataDirectory|ContestPlatform.sdf" providerName="System.Data.SqlServerCe.4.0" />
-->

我正在使用初始化程序类为数据库提供一些初始值。这在我的 Global.asax.cs 文件中被调用,如下所示:

protected void Application_Start()
    {
        Database.SetInitializer<CPContext>(new ContestPlatformInitializer());

        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }

现在,当我运行我的项目时,第一次尝试访问数据库时会引发异常。

Model compatibility cannot be checked because the database does not contain model
metadata. Model compatibility can only be checked for databases created using Code 
First or Code First Migrations.

这是我主页上引发异常的代码:

IQueryable<Submission> submissions = db.Submissions.Where(s => s.ContestId == contestId && s.Entry.isPrivate != true && s.Entry.isApproved);

当我转到我的数据库时,没有创建任何表。实体框架的新手,帮助?

4

1 回答 1

0

我怀疑问题是新数据库还没有“填充”,因为数据库对象(例如表、视图)和它们的数据都不存在。

我不熟悉 SQL CE,但您需要做的是将数据库从 CE 迁移到新服务器。当我将项目从开发环境转移到生产环境时,我经常这样做,因为每个环境的数据库服务器都不同。

阅读如何将 CE 数据库复制到 Sql Server 数据库。您可能可以在 Sql Server Business Development Studio 中创建一个项目来执行此操作。

于 2012-05-09T04:18:15.643 回答