Как исправить SqlException: неверное имя столбца - PullRequest
0 голосов
/ 28 октября 2019

Я использую код EF для первой миграции в MVC5 с SQL Server. Я создал метод post, я отправляю данные DTO от клиента, и я верю, что все в порядке, но когда я пытаюсь сохранить данные в базу данных, я получаю это недопустимое исключение имени столбца для свойства внешнего ключа.

Это первый раз, когда я на самом деле противостою этой ошибке. Я проверил другие вопросы, и большинство ответов были связаны с аннотацией данных [ForeignKey], но я думаю, что реализовал это правильно

Это модель

public class ServiceProvider
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public string PhoneNumber { get; set; }
        public double YearsOfExperiance { get; set; }
        public double AverageRank { get; set; }
        public string Nationality { get; set; }
        public ICollection<JobImage> JobImages { get; set; }
        public ICollection<Review> Reviews { get; set; }
        public ICollection<Rank> Ranks { get; set; }
        public bool Active { get; set; }

        [ForeignKey("Category")]
        public int CategoryId { get; set; }
        public Category Category { get; set; }

        public bool Approved { get; set; }
}

Это метод ActionResult контроллера

[HttpPost]
        public ActionResult AddServiceProvider(ServiceProviderDTO serviceProvider)
        {
            bool isInDb = _context.ServiceProviders.Any(s => s.Name == serviceProvider.Name) ? true : false;
            //var serviceProviderInDb = _context.ServiceProviders.Where(s => s.Name == serviceProvider.Name).FirstOrDefault();

            var newServiceProvider = new ServiceProvider();

            if (isInDb == false)
            {
                newServiceProvider = new ServiceProvider
                {
                    Id = Guid.NewGuid(),
                    Name = serviceProvider.Name,
                    PhoneNumber = serviceProvider.PhoneNumber,
                    YearsOfExperiance = serviceProvider.YearsOfExperiance,
                    Nationality = serviceProvider.Nationality,
                    CategoryId = serviceProvider.CategoryId,
                    Active = true,
                    Approved = serviceProvider.Approved == null ? false : serviceProvider.Approved.Value
                };

                _context.ServiceProviders.Add(newServiceProvider);
                _context.SaveChanges();
            }

            return RedirectToAction("Index", "Home");
        }

Ошибка возникает на _context.SaveChanges(); В нем говорится, что CategoryId является недопустимым именем столбца

Это не первый раз, когда я использую код первой миграции, и я никогда не сталкивалсяэта ошибка раньше, так что я действительно понятия не имею, почему это происходит!

1 Ответ

0 голосов
/ 28 октября 2019

У меня была бы такая модель.

Атрибут ForeignKey принадлежит свойству Category

public class ServiceProvider
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public string PhoneNumber { get; set; }
        public double YearsOfExperiance { get; set; }
        public double AverageRank { get; set; }
        public string Nationality { get; set; }
        public ICollection<JobImage> JobImages { get; set; }
        public ICollection<Review> Reviews { get; set; }
        public ICollection<Rank> Ranks { get; set; }
        public bool Active { get; set; }    
        public int CategoryId { get; set; }

        [ForeignKey("CategoryId")]
        public Category Category { get; set; }

        public bool Approved { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...