2012-12-05 123 views
0

我已经找到了您提供的解决方案之一无法连接到SQL Server 2008在mvc4..I跟着你的答案,但即使我得到错误。无法连接到SQL Server 2008远程数据库MVC4

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" /> 

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

+0

什么是您的远程SQL Server(机器)的名称,以及您尝试连接到的数据库的名称是什么?另外:您试图在该远程服务器(Web,Standard,Enterprise等)上连接的SQL Server 2008的哪个**版本** –

+0

数据库名称= Vedios – user1865384

回答

0

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

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

的“提供者”连接字符串指向一个服务器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;provider connection string深EF连接字符串中。