EntityFramework Core ClassLibrary Project из SQL не работает
Шаг:1 Создан проект библиотеки классов
Шаг 2
public class DbContextFactory : IDesignTimeDbContextFactory<MyContext>
{
public MyContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<MyContext>();
return new MyContext(optionsBuilder.Options);
}
}
Шаг 3
public class MyContext : DbContext
{
public MyContext()
{
}
public MyContext(DbContextOptions<MyContext> options)
: base(options)
{
}
//Proc Results
public DbSet<SearchResult> SearchResults { get; set; }
}
Шаг:4 ==> Создана модель для SearchResult.
public class SearchResult
{
[Key]
public int Id { get; set; }
[Required]
public string Title { get; set; }
}
Шаг: 5 ==> Создан репозиторий
public class SearchRepository : BaseRepository
{
public SearchRepository(MyContext context) : base(context)
{
}
public async Task<IEnumerable<SearchResult>> GetSearchByIdAsync(int id)
{
SqlParameter param = new SqlParameter() {
ParameterName = "@Id",
SqlDbType = System.Data.SqlDbType.Int,
Direction = System.Data.ParameterDirection.Input,
Value = id
};
var result = await _ocmsContext.SearchResults.FromSql("ProcName @Id", param).ToListAsync();
return result;
}
}
Шаг: 6 ==> В базовом проекте Asp.Net webapi добавлена ссылка на проект библиотеки классов.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
var connection = Configuration["ConnectionStrings:MyConnectionString"];
services.AddDbContext<OCMSContext>(options => options.UseSqlServer(connection));
services.AddScoped<ISearchRepository, SearchRepository>();
}
Выполнив весь приведенный выше код, я получаю ошибку компиляции на шаге 5 для FromSql (сообщение об ошибке приведено ниже)
Ошибка CS1061 "DbSet" не содержит определения "FromSql", и невозможно найти доступный метод расширения "FromSql", принимающий первый аргумент типа "DbSet" (вы пропустили директиву using или ссылку на сборку?)
Обратите внимание: если я переместлю SearchRepository в проект Web.Api Core, FromSql не будет отображать никаких ошибок, он будет работать нормально.
Пожалуйста, совет, что я пропускаю.