Код EF4 подходит только для отношений «многие ко многим» - PullRequest
1 голос
/ 26 июня 2010

У меня есть следующее:

  • Продукт 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.

Любая помощь приветствуется.

Спасибо

...