0

mvc4でSQLServer2008に接続できないために提供されたソリューションの1つを調べました。私はあなたの答えに従いましたが、エラーが発生しました。

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

解決策を提供してください。どこが間違っているのですか?そして、それがばかげているか、あなたを不便にさせているならば、申し訳ありません。

4

1 に答える 1

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;を EF 接続文字列のprovider connection string奥深くに含めます。

于 2012-12-05T12:57:57.370 に答える