2017-08-02 10 views
0

ASP.NET Core 1.0 MVCプロジェクトのモデル内からデータベースと対話しようとしています。 モデルからコントローラとビューを作成するために足場が使用されています。ASP.NET Core MVCモデルの_contextへのアクセス

理想的には、_contextを持つコントローラのようにアクセスしたいと思いますが、これを行う方法を見つけることができませんでした。

私はまた、モデルから新しい接続を作成してみました:

using (var context = new ApplicationDbContext()){ 
    // Code here 
} 

をしかしApplicationDbContextコンストラクタは、私は設定から​​取得失敗したデフォルトの接続文字列などのオプションの引数が必要です。

Public ApplicationDbContext(DbContextOptions options) : base(options) { 
} 

これはやりやすいはずなので、私は非常に基本的なことを誤解しています。

どのような考えですか?

+0

私はアクセスする必要がありますが、私は** private ApplicationDbContext _contextのようなものにアクセスします。 公開YourController() { _context = new ApplicationDbContext(); } ** – Unbreakable

+0

と入力し、コントローラアクションで** _ context.YourDBSET変数** – Unbreakable

+0

を使用しますか依存性注入ツールを使用していますか? – Piotr

答えて

1

他の人があなたに言ったように、その方法は依存性注入を使用することです。ここで

は、(PostgreSQLのを使用して)実際の例です:

Startup.cs:あなたのコントローラー(APIコントローラの一例)で

public void ConfigureServices(IServiceCollection services) 
    { 
     ... 

     #region PostgreSQL 
     var sqlConnectionString = Configuration.GetConnectionString("your connection string name"); 

     // Use a PostgreSQL database 
     services.AddDbContext<ApplicationDbContext>(options => 
      options.UseNpgsql(
       sqlConnectionString, 
       b => b.MigrationsAssembly("Your.Assembly.Name") 
      ) 
     ); 
     #endregion 

     ... 
    } 

あなたが持っている。ここ
[Produces("application/json")] 
[Route("api/MyController")] 
public class MyController : Controller 
{ 

    private readonly ApplicationDbContext _context; 

    public DatasourceDataController(ApplicationDbContext context) 
    { 
     _context = context; 
    } 

    [HttpGet()] 
    public async Task<IActionResult> DoSometing() 
    { 
     ... 
     await _context.(...); 
     ... 
    } 
} 

完全な例(「データベースコンテキストの作成」までスクロールすることができます):https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

それが役立つことを願っています。

関連する問題