无法连接到SQL Server 2008远程数据库MVC4

时间:2012-12-05 06:21:06

标签: asp.net-mvc sql-server-2008 entity-framework

我已经查看了您提供的无法在mvc4中连接到SQL Server 2008的解决方案之一。我按照您的回答,但即使我收到错误。

public class videoDBContext : DbContext
{
      static videoDBContext()
      {
        Database.SetInitializer<videoDBContext>(null);
      }

       public videoDBContext()
       : base("Name=videoDBContext")
       {
       }

       public DbSet<Video> Videos { get; set; }

       protected override void OnModelCreating(DbModelBuilder modelBuilder)
       {
         modelBuilder.Configurations.Add(new VideoMap());
       }
      }

域类

     public class Video
     {
      public int Id { get; set; }
      public string Description { get; set; }
     }

将类映射为

     public class VideoMap : EntityTypeConfiguration<Video>
     {
      public VideoMap()
      {
        // Primary Key
        this.HasKey(t => t.Id);

        // Properties
        this.Property(t => t.Description)
                            .IsRequired()
                            .HasMaxLength(50);

        // Table & Column Mappings
        this.ToTable("Video");
        this.Property(t => t.Id).HasColumnName("Id");
        this.Property(t => t.Description).HasColumnName("Description");
       }
}

控制器操作为

  public ActionResult Index()
  {
    ViewBag.Message = "Welcome to ASP.NET MVC!";

    using (videoDBContext context = new videoDBContext())
    {
        var list = **context.Videos.ToList();**
    }

    return View();
  }

我在线附近收到错误:

 Line 20:             var s = context.Videos.ToList();

web.config文件是

<add name="videoDBContext" 
     connectionString="metadata=res://*/Models.xx.csdl|res://*/Models.xx.ssdl|res://*/Models.xx.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=servername;initial catalog=xx.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

请提供解决方案。我哪里错了?抱歉,如果它很愚蠢或让你感到不便。

1 个答案:

答案 0 :(得分:0)

如果您分析连接字符串,您会看到:

connectionString="...provider connection string=&quot;data source=servername;
                  initial catalog=xx.mdf;integrated security=True;

“provider”连接字符串指向服务器servername(这是正确的吗?)并且似乎试图引用.mdf文件。

您应该在制作中执行此操作!您应该使用逻辑数据库名称引用服务器上存在的数据库 - 不要乱用.mdf个文件!

因此,请将连接字符串更改为:

<add name="videoDBContext" 
     connectionString="metadata=res://*/Models.xx.csdl|res://*/Models.xx.ssdl|res://*/Models.xx.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=servername;initial catalog=Vedios;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

initial catalog=Vedios;包含在EF连接字符串内的provider connection string深处。