EF Core内置了对依赖注入的支持。使用EF Core和依赖注入容器也得到了有力的支持。它不是定义连接并利用DbContext派生类来使用SQL Server,而是使用依赖注入框架来连接和SQL Server选项。
为了看到其操作,前面的示例用BooksSampleWithDI示例项目进行修改。
BooksContext类现在看起来要简单的多,只是定义Books属性:
public class BooksContext: DbContext
{
public BooksContext(DbContextOptions<BooksContext> options)
: base(options) { }
public DbSet<Book> Books { get; set; }
}
BooksService是利用BooksContext的新类。在这里,BooksContext通过构造函数注入功能来注入。方法AddBooksAsync和ReadBooksAsync非常类似于前面的示例,但是它们使用BooksService类的上下文成员,而不是创建一个新的上下文:
public class BooksService
{
private readonly BooksContext _booksContext;
public BooksService(BooksContext bookContext) =>
_booksContext = bookContext;
public async Task AddBoksAsync()
{
Book[] books =
{
new Book
{
Title = "Professional C# 6 and .NET Core 1.0",
Publisher = "Wrox Press"
},
new Book
{
Title = "Professional C# 5 and .NET 4.5.1",