Нет метода расширения ToList на dbset - правда правда? - PullRequest
0 голосов
/ 26 ноября 2018

Справочная информация - я использую код структуры Entity версии 2.1.4-rtm-31024

, проверьте СПИСОК КОДОВ 1 - проблема (согласно Ms Build Engine 15.9) заключается в том, чтоGetAllMakes вызывает .ToList, но не существует метода ToList для DbSet из VehicleMake.(посмотрите Листинг 2 ), чтобы увидеть реализацию _vehicleContext.VehicleMakes

Почему я получаю ошибку компиляции?это не имеет смысла для меня, так как я могу вызвать VehicleMakes.ToList () в другом месте кода (без ошибок компилятора) вообще никаких проблем - см. листинг 3 для примера.

СПИСОК КОДОВ 1

using System.Collections.Generic;

namespace CarPriceComparison.Models
{
    public class VehicleRepository : IVehicleRepository
    {
        private VehicleContext _vehicleContext;
        public VehicleRepository(VehicleContext dbContext_)
        {
            _vehicleContext = dbContext_;
        }
        public IEnumerable<VehicleMake> GetAllMakes()
        {
            return _vehicleContext.VehicleMakes.ToList();
        }
    }
}

СПИСОК КОДОВ 2

namespace CarPriceComparison.Models
{
    public class VehicleContext : DbContext
    {
        private IConfigurationRoot _config;
        public VehicleContext(IConfigurationRoot config_, DbContextOptions 
  options_) : base(options_)
        {
            _config = config_;    
        }

        public DbSet<VehicleMake> VehicleMakes {get; set;}

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
            optionsBuilder.UseSqlServer(_config["ConnectionStrings:VehicleContextConnection"]);    
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<VehicleModel>()
            .HasOne(p => p.Make)
            .WithMany(b => b.Models)
            .HasForeignKey(p => p.VehicleMakeForeignKey)
            .IsRequired()
            .OnDelete(DeleteBehavior.Cascade);
        }

    }
}

СПИСОК КОДОВ 3

private VehicleContext _vehicleContext;
        private IMailService _mailService;
        private IConfigurationRoot _config;

    public HomeController(IMailService mailService_, IConfigurationRoot 
    config_, VehicleContext vehicleContext_)
    {
        _vehicleContext = vehicleContext_;
        _mailService = mailService_;
        _config = config_;
    }
    public IActionResult Index()
    {
        var vehicleData = _vehicleContext.VehicleMakes.ToList();
        return View();
    }

1 Ответ

0 голосов
/ 26 ноября 2018

Я думаю, что вы пропустили заявление об использовании.

using System.Linq;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...