2

我正在从 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller学习 MVC4 (编辑:已修复网址)

一切正常,但我的数据库没有更新,但是当我运行项目时,记录来自某个地方,我在我的 MSSQL 中找不到该数据库。

我在 web.config 中的连接字符串是

<connectionStrings>
    <add name="PurchaseInfosDbContext" 
         connectionString="server=lakpa-pc;Integrated Security=SSPI; User ID=sa; Password=xxxxx; database=MessInfo" providerName="System.Data.SqlClient" />
</connectionStrings>

但是在Visual Studio中,当我调试时,我得到的连接字符串为

"Data Source=.\\SQLEXPRESS;Initial Catalog=Mvc4Projects.Models.ItemsDetailsDbContext;Integrated Security=True;MultipleActiveResultSets=True"

它不应该从 web.config 中读取连接字符串吗?我没有修改任何页面上的任何连接字符串。

一种。是否有必要包含该教程中所示的 SDF 文件?我不能直接将其更新为 mdf 文件吗?

4

4 回答 4

5

我的问题是继承 DbContext 的类的名称不同,因此 MVC 采用默认连接到 SQLExpress,即使我没有指定它。

好吧,我更改了类似于连接字符串名称的类名称,现在它指向更正位置。

可能会对某人有所帮助。面临并解决的问题

一种。继承 DbContext 的 Class 必须用作连接字符串的名称。

湾。Entity 框架添加的 SQL Query 具有复数表名,因此使用属性 [Table("PurchaseInfo")] 使其单数。

C。使用 POCO 方法时,如果您不遵循其命名约定(如在我的示例中其 Key 必须是“PurchaseInfoID”但我使用 ItemId ),则会遇到密钥问题。所以使用属性[Key]来解决这个问题。

public  class PurchaseInfoDbContext : DbContext
    {
        public DbSet<PurchaseInfo> ItemsDetails { get; set; }
    }

    [DisplayName("Items Details")]
    [Table("PurchaseInfo")]
    public class PurchaseInfo
    {
        [HiddenInput]
        [Key]
        public int ItemId { get; set; }
}
于 2012-08-16T04:59:02.827 回答
2

我有同样的问题,如果你已经有 App_Data 文件夹删除它,然后从 Project-> Add ASP.Net folder -> App_Data 添加一个新文件夹

于 2012-12-14T19:40:30.183 回答
0

当您使用“Internet 应用程序”启动一个新的 MVC 4 项目时,它会添加一个指向 sql express 数据库的默认连接字符串。你确定你的 web.config 中还没有那个连接字符串吗?

于 2012-08-15T05:11:09.690 回答
0

我发现这篇文章 - http://blogs.msdn.com/b/sqlexpress/archive/2011/12/09/using-localdb-with-full-iis-part-1-user-profile.aspx 解决了这个问题. 但是,如果用户通过 IIS 运行应用程序,这适用

于 2014-02-12T14:08:03.617 回答