Я не уверен, как отобразить следующие таблицы ниже в EF 4.1 code first
и какие объекты мне нужны для представления таблиц.Как получить список характеристик продукта?
В настоящее время у меня есть только класс Product
.
Products Table:
Id
Name
IsActive
ProductSpecification Table:
ProductId
SpecificationId
Specifications Table:
Id
Name
IsActive
ProductSpecifications
- это таблица ассоциации.В моем классе контекста также определено следующее:
public DbSet<Product> Products { get; set; }
РЕДАКТИРОВАТЬ
Пожалуйста, смотрите мой обновленный исходный пост.Я изменил идентификатор таблиц продуктов и спецификаций.
В моем классе контекста у меня есть следующее:
public DbSet<Product> Products { get; set; }
public DbSet<Specification> Specifications { get; set; }
В моем хранилище есть следующее:
public Product GetById(int id)
{
return db.Products
.Include("Specifications")
.SingleOrDefault(x => x.Id == id);
}
Мой Product class
(частично):
public class Product : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public ICollection<Specification> Specifications { get; set; }
}
Мой Specification class
:
public class Specification : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public ICollection<Product> Products { get; set; }
}
Это все, что я сделал из ответа Слаумы.Я не делал сопоставление вручную так, как он сказал, что я должен, но сначала мне нужно понять следующее:
Учитывая мои классы и таблицы сверху, что именно говорится в соглашениях об именах EF 4.1 о том, как он обрабатываеттаблицы ассоциаций?Причина, по которой я спрашиваю, состоит в том, что я получаю следующую ошибку в своем методе GetById:
Invalid object name 'dbo.SpecificationProducts'.
EDIT 2
Я забыл упомянуть следующее :) Продуктможет иметь в качестве значения высоту спецификации.И для этой высоты мне нужно указать значение.Как 100 дюймов.Поэтому я изменил таблицу ProductSpecifications, чтобы в ней был столбец значений с именем SpecificationValue
, этот столбец будет содержать значение 100 дюймов.Как бы я изменил код, чтобы получить это значение?Мне нужно отобразить это на моем видении.