
こんにちは。
前提・実現したいこと
Windows10を使ってVisual Studo 2017でコンソールアプリケーションのプロジェクトを作っています。
Code FirstでローカルのSQLに接続しようとしています。
connectionStringを設定しないときは接続でき、tableを作れました。
コンソールアプリケーションのプロジェクトを作り、EntityFrameWorkをNugetしました。
データADO.NET Entity Data Model(BooksDbContext)を作り設定しました。
connectionStringの書き方を教えてください。
発生している問題・エラーメッセージ
connectionStringの書き方がわからない。
該当のソースコード
コードはこれだけです。
C#
1using ConsoleApp1.Models; 2 3namespace ConsoleApp1 4{ 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 using (var db = new BooksDbContext()) 10 { 11 var book1 = new Book 12 { 13 Title = "幻魔大戦1幻魔宇宙", 14 PublishedYear = 1979 15 }; 16 db.Books.Add(book1); 17 db.SaveChanges(); 18 } 19 } 20 } 21}
C#
1namespace ConsoleApp1.Models 2{ 3 public class Book 4 { 5 public int Id { get; set; } 6 public string Title { get; set; } 7 public int PublishedYear { get; set; } 8 } 9} 10
C#
1namespace ConsoleApp1.Models 2{ 3 using System.Data.Entity; 4 5 public class BooksDbContext : DbContext 6 { 7 //public BooksDbContext() 8 // : base("name=BooksDbContext")//<-ここのnameはどこと関係する? 9 //{ 10 //} 11 12 public DbSet<Book> Books { get; set; } 13 } 14}
XML
1<?xml version="1.0" encoding="utf-8"?> 2<configuration> 3 <configSections> 4 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 5 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a7c771981e077" requirePermission="false" /> 6 </configSections> 7 <startup> 8 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" /> 9 </startup> 10 <entityFramework> 11 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 12 <providers> 13 <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 14 </providers> 15 </entityFramework> 16<!-- <connectionStrings> 17 <add name="BooksDbContext" connectionString="data source=(localhost)\SQLEXPRESS;initial catalog=ConsoleApp1.Models.BooksDbContext;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 18 </connectionStrings> 19--> 20</configuration>
試したこと
SSMSでは接続できています。
data source=(localhost)\SQLEXPRESS;
を
data source=(localhost)\SQLEXPRESS;//db.Books.Add(book1);で無反応 data source=localhost\SQLEXPRESS;//インスタンスエラーです data source=(localhost)\SQLEXPRESS;//db.Books.Add(book1);で無反応 data source=localhost\SQLEXPRESS;//db.Books.Add(book1);で無反応 data source=localhost;//db.Books.Add(book1);で無反応 data source=\SQLEXPRESS;//db.Books.Add(book1);で無反応
などにしました。
現在、SSMSで「localhost\SQLEXPRESS」にWindows認証でアクセスできます。
質問のため便宜的に項目に分けます
name="BooksDbContext"//<-BooksDbContextのbase("name=")の項目と一致? //public BooksDbContext() // : base("name=BooksDbContext") //{ //} connectionString=" data source=(localhost)\SQLEXPRESS; SSMSでは「localhost\SQLEXPRESS」にWindows認証でアクセスできる。()と\はどうする? initial catalog=ConsoleApp1.Models.BooksDbContext;//BooksDbContextのClass名? 任意の名前にできる? integrated security=True; MultipleActiveResultSets=True; App=EntityFramework" providerName="System.Data.SqlClient" //<-変更できる?
求める回答
Q1)なぜdata source=(localhost)\SQLEXPRESS;でアクセスできない?
Q2)data source=なにならアクセスできる?
Q3)コードの : base("name=BooksDbContext")はどこと関係する?
Q4)App.configの、name="BooksDbContext"か?
Q5)initial catalog=ConsoleApp1.Models.BooksDbContext;はBooksDbContextのClass名?
Q6)initial catalog=ConsoleApp1.Models.BooksDbContext;は任意の名前にできる?
補足情報(FW/ツールのバージョンなど)
Intel Pentium(R) CPU 4415 Y 1.60GHz RAM 8GB Windows10Pro 64bit 1803 17134.345 Microsoft Visual Studio Community 2017 Version 15.8.5 VisualStudio.15.Release/15.8.5+28010.2036 Microsoft .NET Framework Version 4.7.03056 インストールされているバージョン:Community



回答1件
あなたの回答
tips
プレビュー