Подтвердить что ты не робот

Entity Framework Несколько столбцов в качестве основного ключа с помощью Fluent Api

Это мои упрощенные классы домена.

public class ProductCategory
{
    public int ProductId { get; set; }
    public int CategoryId { get; set; }

    public virtual Product Product { get; set; }
    public virtual Category Category { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
} 

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? ParentCategoryId { get; set;} 
} 

Это мой класс отображения. Но он не работает.

public class ProductCategoryMap : EntityTypeConfiguration<ProductCategory>
{
    public ProductCategoryMap()
    {
        ToTable("ProductCategory");
        HasKey(pc => pc.ProductId);
        HasKey(pc => pc.CategoryId);
    }
}

Как мне сопоставить эти классы, чтобы один продукт можно было увидеть в нескольких категориях?

4b9b3361

Ответ 1

Использовать анонимный объект типа вместо двух разделенных операторов:

    HasKey(pc => new { pc.ProductId, pc.CategoryId});

Из MSDN: EntityTypeConfiguration.HasKey Method

Если первичный ключ состоит из нескольких свойств, укажите анонимный тип, включая свойства. Например, в С# t => new { t.Id1, t.Id2 } и в Visual Basic.Net Function(t) New From { t.Id1, t.Id2 }.