У меня есть следующее:
- Продукт POCO
- Класс ProductConfiguration только для кода EF (CTP3)
- Таблица продуктов в базе данных
- Таблица ProductCrossSell в базе данных
Мой класс Product и ProductConfiguration выглядит так:
public class Product
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Product> CrossSells { get; set; }
}
public class ProductConfiguration : EntityConfiguration<Product>
{
public ProductConfiguration()
{
HasKey(p => p.Id);
Property(p => p.Name).IsRequired().IsUnicode().IsVariableLength().HasMaxLength(254);
// Relationship??
MapSingleType(p => new
{
p.Id,
p.Name
}).ToTable("Product");
}
}
Мои таблицы базы данных выглядят как
CREATE TABLE [dbo].[Product](
[Id] [uniqueidentifier] NOT NULL,
[Name] [nvarchar](254) NOT NULL
CREATE TABLE [dbo].[ProductCrossSell](
[Id] [uniqueidentifier] NOT NULL,
[ProductId] [uniqueidentifier] NOT NULL
Это просто таблица Product, имеющая отношение «многие ко многим», где продукты могут быть связаны с другими продуктами.
Кто-нибудь знает, как установить эти отношения только в коде EF? Я вижу примеры других отношений, устанавливаемых в коде, но нет примеров того, как это настроить.
При успешном выполнении запроса GetProductById EF объединяет две таблицы и заполняет объект Product, а также CrossSells IColletion.
Любая помощь приветствуется.
Спасибо