Ошибка использования Code-first в EF с существующей базой данных - PullRequest
0 голосов
/ 30 сентября 2011

Я следовал Используя EF «Code First» с существующей базой данных пошаговое руководство, но получал следующую ошибку:

Неверное имя столбца Category_CategoryID

Ниже приведен код выдержки:

public class Product
{
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public decimal? UnitPrice { get; set; }
    public bool Discontinued { get; set; }

    public virtual Category Category { get; set; } 
}

public class Category
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
    public string Description { get; set; }
    public byte[] Picture { get; set; }

    public virtual ICollection<Product> Products { get; set; }
}

Почему это происходит .

РЕДАКТИРОВАТЬ - Я могу сделать эту работувключив public int CategoryID в Класс продукта, но не знаю деталей.

1 Ответ

2 голосов
/ 05 ноября 2011

Вы должны сообщить EF, что Products.Category является инверсией Category.Products. Я не уверен, почему это не показано в блоге ScottGu.

Код, который вам нужен, будет выглядеть примерно так в вашем подклассе DbContext:

protected override void OnModelCreating(ModelBuilder modelBuilder {)
  modelBuilder.Entity<Product>().HasOne(p => p.Category).WithMany(c => c.Products);
}
...