Mapeando tabelas de associação no código EF 4.1 primeiro
Não sei ao certo como mapear as tabelas a seguir abaixo emEF 4.1 code first
e quais objetos eu preciso para representar as tabelas. Como recupero uma lista das especificações do produto?
Atualmente, só tenho umProduct
classe
Products Table:
Id
Name
IsActive
ProductSpecification Table:
ProductId
SpecificationId
Specifications Table:
Id
Name
IsActive
ProductSpecifications
é uma tabela de associação. Eu também tenho o seguinte definido na minha classe de contexto:
public DbSet<Product> Products { get; set; }
EDITA
Por favor, veja minha postagem original atualizada. Alterei o ID das tabelas de produtos e especificações.
Na minha classe de contexto, tenho o seguinte:
public DbSet<Product> Products { get; set; }
public DbSet<Specification> Specifications { get; set; }
No meu repositório, tenho o seguinte:
public Product GetById(int id)
{
return db.Products
.Include("Specifications")
.SingleOrDefault(x => x.Id == id);
}
MinhasProduct class
(parcial):
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; }
}
MinhasSpecification 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; }
}
Isso foi tudo o que fiz com a resposta de Slauma. Não fiz o mapeamento manualmente como ele disse que eu deveria, mas primeiro preciso entender o seguinte:
Dadas minhas classes e tabelas acima, o que exatamente as convenções de nomenclatura EF 4.1 indicam sobre como ele lida com tabelas de associação? O motivo pelo qual pergunto é porque recebo o seguinte erro no meu método GetById:
Invalid object name 'dbo.SpecificationProducts'.
EDIT 2
Esqueci de mencionar o seguinte :) Um produto pode ter uma altura de especificação como valor. E para esta altura, preciso especificar um valor. Como 100 polegadas. Então, modifiquei a tabela ProductSpecifications para ter uma coluna de valor chamadaSpecificationValue
, esta coluna conterá o valor 100 polegadas. Como eu modificaria o código para recuperar esse valor também? Preciso exibi-lo na minha opinião.