---
# System prepended metadata

title: ASP.NET Core で Entity Framework を使用する Azure SQL Server（SQL認証） 2023-06-29
tags: [EF Core, Azure SQL Server, Entity Framework Core, Azure SQL Database, ASP.NET Core]

---

---
lang: ja-jp
breaks: true
---
# ASP.NET Core で Entity Framework を使用する Azure SQL Server（SQL認証） 2023-06-29

> .NET と Entity Framework Core を使用して Azure SQL Database に接続してクエリを実行する
> https://learn.microsoft.com/ja-jp/azure/azure-sql/database/azure-sql-dotnet-entity-framework-core-quickstart?view=azuresql&tabs=dotnet-cli%2Cservice-connector%2Cportal

## Azure SQL Server（SQL認証）

* SQL Serverを使用してサーバを作成する。
![](https://hackmd.io/_uploads/HkbSk59O3.png)

* パブリックアクセスで、アクセス元を制限する。
![](https://hackmd.io/_uploads/SJxlxq5O2.png)

* SQL認証を許可する。
![](https://hackmd.io/_uploads/HyC3Gqcu3.png)


### *.csproj

```xml=
・・・
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.8" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.8">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.8" />
  </ItemGroup>
・・・
```

### appsettings.Development.json

```json=
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },

  /* Azure SQL Database に接続するコードを追加する */
  "ConnectionStrings": {
    "AZURE_SQL_CONNECTIONSTRING": "Server=xxxxxxxxxxxxx.database.windows.net; Database=passwordlessdb; UID=XXXXXXXX; PWD=XXXXXXXX; Encrypt=True; TrustServerCertificate=True; MultipleActiveResultSets=true; Connect Timeout=10; Max Pool Size=1000; Application Name=DotNetSQL;"
  }
}
```

### DbContext

```csharp=
public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class PersonDbContext : DbContext
{
    public PersonDbContext(DbContextOptions<PersonDbContext> options)
        : base(options)
    {
    }

    public DbSet<Person> Person { get; set; }
}
```

### Program.cs

```csharp=
・・・
var builder = WebApplication.CreateBuilder(args);
・・・
// Azure SQL Database に接続するコードを追加する 開始
var connection = String.Empty;
if (builder.Environment.IsDevelopment())
{
    builder.Configuration.AddEnvironmentVariables().AddJsonFile("appsettings.Development.json");
    connection = builder.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING");
}
else
{
    connection = Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING");
}

builder.Services.AddDbContext<PersonDbContext>(options => 
    {
        options.UseSqlServer(connection);
    }
    );
// Azure SQL Database に接続するコードを追加する 終了

var app = builder.Build();
・・・
```

### `Migrations`の生成

```shell=
dotnet ef migrations add InitialCreate
```

![](https://hackmd.io/_uploads/BkrOQq9d3.png)

### テーブルの作成

```shell=
 dotnet ef database update
```

![](https://hackmd.io/_uploads/S1jt7q9d2.png)

### テーブルの削除

```shell=
dotnet ef database drop
```

![](https://hackmd.io/_uploads/rJs9V9q_2.png)

