Я строю свой уровень данных с помощью Entity Framework и пытаюсь поместить ссылочные поля объекта в ключ этого объекта.
Используя VS2010, .NET 4, EF 4.1, CodeFirst.
Учитывая всю эту информацию, рассмотрим следующий пример кода:
public class Customer
{
[Key]
[Column(Order = 0)]
public int SetID { get; set; }
[Key]
[Column(Order = 1)]
public int CustomerId { get; set; }
public string CustomerName { get; set; }
}
public class Product
{
[Key]
[Column(Order = 0)]
public int SetID { get; set; }
[Key]
[Column(Order = 1)]
public int ProductId { get; set; }
public string ProductName { get; set; }
}
public class SalesVolume
{
[Key]
[Column(Order = 0)]
public Product product { get; set; }
[Key]
[Column(Order = 1)]
public Customer customer { get; set; }
[Key]
[Column(Order = 2)]
public DateTime SalesDate { get; set; }
public double Value { get; set; }
}
Все мои данные организованы в наборы, поэтому в сущностях Product и Customer есть поля setID.
Для SalesVolume у меня есть ссылки на сущности Product и Customer, и я хочу, чтобы эти ссылочные поля были частью моего составного первичного ключа для SalesVolume.В отличие от того, что я спрашиваю, для кода выше EF сгенерировал следующую таблицу:
CREATE TABLE [dbo].[SalesVolumes](
[SalesDate] [datetime] NOT NULL,
[Value] [float] NOT NULL,
[product_SetID] [int] NULL,
[product_ProductId] [int] NULL,
[customer_SetID] [int] NULL,
[customer_CustomerId] [int] NULL,
PRIMARY KEY CLUSTERED
(
[SalesDate] ASC
)
Ссылки на товары и клиентов размещены в двух полях, и они не являются частью первичного ключа.
Как я могу сказать EF генерировать таблицу SalesVolume только с одним полем setID и с PK: (setID, productID, customerID)?
Спасибо.