System.Data.SqlClient.SqlException: недопустимое имя столбца 'Gender_id' - PullRequest
0 голосов
/ 08 сентября 2018

Я изучаю разработку веб-приложений с asp.net mvc & Entity Framework. У меня есть база данных с 3 таблицами студентов, полов и программ. Я столкнулся с этой проблемой.

Ошибка в строке 23.

Неверное имя столбца 'Genders_Id'. Неверное имя столбца «Programs_Id».

Сведения об исключении: System.Data.SqlClient.SqlException: Неверное имя столбца 'Genders_Id'. Неверное имя столбца «Programs_Id».

Source Error:


Line 21:         {
Line 22:             StudentsContext stdContext = new StudentsContext();
Line 23:             Students students = stdContext.Students.Single(std => std.Id == id);
Line 24:             //ViewBag.Student = students;
Line 25:             return View(students);

Мой код для Students.cs Модель:

namespace WebApplication4.Models
{
  public class Students
  {
     public string Name { get; set; }
     public int Id { get; set; }
     public int Gender { get; set; }
     public int Program { get; set; }
     public string Country { get; set; }
   }
}

Файл My Context.cs:

public class StudentsContext:DbContext
{
    public DbSet<Students> Students { get; set; }
    public DbSet<Programs> Programs { get; set; }
    public DbSet<Genders> Genders { get; set; }
}

Programs.cs:

public class Programs
{
    public int Id { get; set; }
    public string Program { get; set; }
    public List<Students> Students { get; set; }
}

Genders.cs:

public class Genders
{
    public int Id { get; set; }
    public string Gender { get; set; }
    public List<Students> Students { get; set; }
}

Таблицы базы данных:

enter image description here

Ответы [ 2 ]

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

Ваша проблема в том, что строка подключения на уровне данных и строка подключения на веб-уровне указывают на разные базы данных.

например. веб-приложение базы данных чтения уровня данных, указывающее на тестовую базу данных.

либо обновить строки подключения, чтобы они указывали на ту же базу данных

или

убедитесь, что обе базы данных имеют одинаковые таблицы и столбцы

0 голосов
/ 08 сентября 2018

Genders_Id и Programs_Id являются стандартными именами столбцов FK по умолчанию в EF6 для отношений «один ко многим», введенных соответственно в свойствах навигации коллекции Genders.Students и Programs.Students.

Поскольку имена свойств / столбцов FK не являются обычными, их следует указывать с помощью [ForeinKey] аннотаций данных:

public class Programs
{
    // ...
    [ForeignKey("Program")]
    public List<Students> Students { get; set; }
}

public class Genders
{
    // ...
    [ForeignKey("Gender")]
    public List<Students> Students { get; set; }
}

или (мой предпочтительный) свободный API:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    // ...

    modelBuilder.Entity<Genders>()
        .HasMany(e => e.Students)
        .WithRequired()
        .HasForeignKey(e => e.Gender);

    modelBuilder.Entity<Programs>()
        .HasMany(e => e.Students)
        .WithRequired()
        .HasForeignKey(e => e.Program);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...