【问题标题】:connecting to SQL Server 2008 using MVC 3 ASP.net使用 MVC 3 ASP.net 连接到 SQL Server 2008
【发布时间】:2012-01-16 23:49:01
【问题描述】:

我是 ASP.net 的 MVC 3(使用 VB)的新手,我正在尝试创建一个可以连接到 SQL 2008 服务器数据库的应用程序。我已经阅读了一个教程(Microsoft ASP.net 的 Movie DB 教程),但该教程使用的是 SQL 精简版。我很难连接。我是否正确假设一旦我创建了一个模型,我应该能够通过更改位于应用程序文件夹根目录的 Web.config 文件中的连接字符串来连接到 SQL 2008?我从 App_Data 文件夹中删除了 sql ce 数据库。在 Microsoft SQL Server Management Studio 中,我创建了一个新数据库。然后我将它添加到我的 Web.config 文件中:

      <connectionStrings>
<add name="ConnectionName"
     providerName="System.Data.SqlClient"
     connectionString="Data Source=DELERIUM-PC;Initial Catalog=iDjItDb;Integrated         Security=True" />
       </connectionStrings>

当我运行应用程序并尝试查看与模型关联的控制器时,我收到此错误:

支持“iDjItDBContext”上下文的模型已更改 数据库已创建。手动删除/更新数据库, 或使用 IDatabaseInitializer 实例调用 Database.SetInitializer。 例如,DropCreateDatabaseIfModelChanges 策略将 自动删除并重新创建数据库,并可选择为其播种 使用新数据。

我必须如何连接和使用 2008 SQL 数据库?

谢谢 杰森

【问题讨论】:

    标签: asp.net-mvc-3 entity-framework-4.1


    【解决方案1】:

    如果您确定您的模型与数据库兼容,则可以删除上下文类中的 IncludeMetadataConvention

    public class iDjItDBContext : DBContext
    {
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
        }
    }
    

    否则你需要在Global.asax.cs文件的Application_Start()方法中设置初始化器。

    Database.SetInitializer<iDjItDBContext>(
            new DropCreateDatabaseIfModelChanges<iDjItDBContext>());
    

    否则,您可以使用Migrations 选项,外部工具将生成更改脚本。

    编辑 将连接字符串名称更改为iDjItDBContext,以便名称与DbContext 名称匹配。

    <connectionStrings>
    <add name="iDjItDBContext"
         providerName="System.Data.SqlClient"
         connectionString="Data Source=DELERIUM-PC;Initial Catalog=iDjItDb;Integrated         Security=True" />
           </connectionStrings>
    

    或者在您的上下文中创建一个构造函数并传递连接字符串的名称。

    public class iDjItDBContext : DBContext
    {
         public iDjItDBContext() : base("ConnectionName")
         {
         }
    }
    

    【讨论】:

    • 感谢您的回复。虽然这消除了所有错误,但我对数据的存储位置感到困惑。当我向应用程序添加新数据时,我可以看到它保存(即使在重新启动服务器实例后),但 SQL 服务器上的指定数据库中没有数据,App_data 文件夹中也没有数据库。它只是存储在内存中吗?谢谢
    • 谢谢,这似乎已经解决了!
    • @Eranga 我正在关注this tutorial. 虽然我已经为我的数据源指定了完整版本的 sql server 连接字符串,但我认为该程序实际上利用了现有的应用程序服务数据源。我想使用我的本地数据源来创建数据库并通过 EF 进行 crud。你能帮帮我吗?
    猜你喜欢
    • 2012-08-17
    • 2014-12-30
    • 2011-07-17
    • 2010-10-22
    • 2018-07-07
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多