Шаг: 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 не показывает никаких ошибок, он работает нормально.
Пожалуйста, посоветуйте, чего мне не хватает.