EntityFramework Core ClassLibrary Project из SQL не работает - PullRequest
0 голосов
/ 16 ноября 2018

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

Пожалуйста, посоветуйте, чего мне не хватает.

...