Minaminawwh
@Minaminawwh (snow ggo)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

コントローラーのスキャフォールドのエラー。ASP.NET Core で Web API作成

解決したいこと

チュートリアル: ASP.NET Core で Web API を作成する
https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/first-web-api?view=aspnetcore-5.0&tabs=visual-studio

について質問です。

「コントローラーのスキャフォールディング」でエラーが出ました。
Controllersフォルダを右クリックして、スキャフォールディングされた項目、[Entity Framework を使用したアクションがある API コントローラー] を選択してから、 [追加]をしたところ、次のようなエラーメッセージが出ました。 

(最終的には、このチュートリアルで練習したのちに、本の検索プログラムを作り、jsonで返したいです。)

エラーの内容を見る限り、サービスの設定をすればよいものと思われますが、サービスとは何でしょうか??

何か解決方法はありませんか?

発生している問題・エラー

There was an error running the selected code generator:
'Unable to resolve service for type
'Micfosoft.EntityFrameworkCoreDbContextOptions'1[TodoApi.Models.TodoContext]' while attempting to activate
'TodoApiModels.TodoContext'.'

'TodoApiModels.TodoContext'をアクティベートしようとするときに、'Micfosoft.EntityFrameworkCoreDbContextOptions'1[TodoApi.Models.TodoContext]のタイプに、
「サービス」が設定できません。

該当するソースコード

```ASP.NET Core 
Modelsフォルダ内のcsファイル

//TodoContext.cs

using Microsoft.EntityFrameworkCore;

namespace TodoApi.Models
{
public class TodoContext : DbContext
{
public TodoContext(DbContextOptions options)
: base(options)
{
}

    public DbSet<TodoItem> TodoItems { get; set; }
}

}

// TodoItem.cs

namespace TodoApi.Models
{
public class TodoItem
{
public TodoItem(long id, string name, bool isComplete)
{
Id = id;
Name = name;
IsComplete = isComplete;
}

    public long Id { get; set; }
    public string Name { get; set; }
    public bool IsComplete { get; set; }
}

}



### 自分で試したこと

1.参考情報。チュートリアルがアップされたのは今年の夏頃なので、
使用ヴァージョンはVS 2019だと思います。
私の使用ヴァージョンは11月末にリリースされたVS 2022です。

2. NugetよりインストールしたEntityFrameWorkのパッケージは、

チュートリアルのMicrosoft.EntityFrameworkCore.InMemory と、
--(省略).Core 
--(省略).Tools
--(省略).SqlServer
--(省略).Design 

です。


3.
恐らくですが、発生している問題・エラーに記載していますが、エラーの内容を見る限りはサービスを設定すれば解決するはずです。
しかしサービスの内容がよくわかりません。

4.Modelsファイル内のTodoItem.cs 
において、コンストラクタを追加してみました。
0

1Answer

全コードを見ないとわからないのですが、こちらのコードをcloneして動くか見て、差分を見るのがいいかもしれないです。
最近はマイクロソフトのドキュメントは良くなりましたね。

0Like

Comments

  1. @Minaminawwh

    Questioner

    ありがとうございます。githubにもあるんですね。
    Versionが変わると、チュートリアル通りではなくて少し仕様が違っていてそれに気づくのが大変でした。
    参考にしてみます。

Your answer might help someone💌