C# asp.net web コードファーストで落ちます。

タグの編集
投稿者 ケンケン  (社会人) 投稿日時 2023/2/6 16:02:32
1.DbContext 作成
   public class MySqlModel : DbContext
    {
        public MySqlModel()
            : base("name=MySqlModel")
        {
        }
        // 従業員エンティティ
         public virtual DbSet<employee> employees { get; set; }
    }
2.従業員エンティティ
    public class employee
    {
        [Key]
        // 主キー
        public int EmpId { get; set; }
        // 氏名
        [StringLength(50)]
        public string EmpName { get; set; }
        // 誕生日
        public DateTime Birthday { get; set; }
        // 電話番号
        [StringLength(50)]
        public string TelNo { get; set; }
        // 性別    
        public bool Sex { get; set; }
    }
3.DB作成
    public class CustomSeedInitializer : DropCreateDatabaseAlways<MySqlModel> //常にデータベースを再生成する。
    {
        protected override void Seed(MySqlModel context)
        {
            base.Seed(context);

            //以降にcontextを使って初期データを投入するロジックを記す

            //
            var employee1 = new employee()
            {
                EmpId = 1,
                EmpName = "土井",
                Birthday = DateTime.Parse("1978-10-25"),
                Sales = 10000,
                TelNo = "011-111-0001",
                DeptNo = 1,
                Sex = true,
            };
            var employee2 = new employee()
            {
                EmpId = 2,
                EmpName = "中村",
                Birthday = DateTime.Parse("1975-2-3"),
                Sales = 20000,
                TelNo = "011-111-0002",
                DeptNo = 2,
                Sex = false,
            };
            context.employees.Add(employee1);
            context.employees.Add(employee2);
  
            context.SaveChanges();

        }

    }

4.dbの初期化実行
      protected void Application_Start(object sender, EventArgs e)
        {
            //データベース初期化にはCustomSeedInitializerを使用する
            Database.SetInitializer(
              new CustomSeedInitializer());
        }
  
5.dbの内容をhtml に表示

        protected void Page_Load(object sender, EventArgs e)
        {
            string content = "";
            //コンテキストクラスを作成
            using (var context = new MySqlModel())
            {
                //従業員一覧を取得
                var employees = context.employees;

                //従業員一人一人について処理
                foreach (var item in employees)
                                           ----------
                                          上の箇所で落ちます。
                    ※1
                {
                    content += string.Format("Id:{0},Na:{1},birth:{2},Tel:{3},Sex:{4} <br />",
                                            item.EmpId, item.EmpName, item.Birthday, item.TelNo, item.Sex ? "男性" : "女性");
                }

                //文字列を画面表示する(Literal1はLiteralコントロール)
                Literal1.Text = content;
            }
        }

※1
System.Data.SqlClient.SqlException
  HResult=0x80131904
  Message=SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: SQL Network Interfaces, error: 0 -  [x89C5010A])
  Source=.Net SqlClient Data Provider
  スタック トレース:
<例外のスタック トレースを評価できません>

内部例外 1:
Win32Exception: Unknown error (0x89c5010a)

何方か分かる方ご教授お願い致します。
投稿者 shu  (社会人) 投稿日時 2023/2/7 07:44:37
1.SQL Server Management Studioなどで接続の確認
(1) サーバー内での接続が可能か
(2) サーバー外からの接続が可能か?


2.MySQlModelの表す接続文字列が正しいか確認
投稿者 ケンケン  (社会人) 投稿日時 2023/2/7 08:59:39
1.接続方法は、ローカルDB((localdb)¥MSSQLLocalDB)です。

2.確認致します。
  MySQlModelの表す接続文字列が正しいか確認

  回答ありがとうございます。
投稿者 ケンケン  (社会人) 投稿日時 2023/2/7 10:44:41

因みに、接続内容

   <add name="MySqlModel" connectionString="data source=(LocalDb)\MSSQLLocalDB;
 initial catalog=Web_SQL_Entity01.MySqlModel;
 integrated security=True;
 MultipleActiveResultSets=True;
 App=EntityFramework" providerName="System.Data.SqlClient" />

   ※ 大丈夫と思います。
 
投稿者 shu  (社会人) 投稿日時 2023/2/8 07:45:36
接続出来ないエラーなので、接続先が間違っているか、準備が整っていないか、接続方法が間違っている
などだと思います。テーブルが用意されているのでlocaldbがインストールされていないということは
ないと思います。

マイクロソフトの説明サイトです。
https://learn.microsoft.com/ja-jp/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-ver16
投稿者 ケンケン  (社会人) 投稿日時 2023/2/8 12:49:19
回答ありがとうございます。

自宅で試した所上手く行きました。
 
会社のノートパソコンの環境に不具合があるかも知れません。

わたしも良く分かりません。