В настоящее время я пытаюсь реализовать репозитории для своих доменных объектов с помощью RC Entity Framework 4.1 и его подхода «сначала код».
Теперь у меня есть сущность домена "Voyage", которая имеет уникальный идентификатор, инкапсулированный в тип "VoyageNumber"
public class VoyageNumber
{
private readonly string number;
public VoyageNumber(string number)
{
Validate.NotNull(number, "VoyageNumber is required");
this.number = number;
}
public string Id
{
get { return number; }
}
Теперь я получаю исключение, когда я делаю это в конфигурации моего DbContext:
modelBuilder.Entity<Voyage>().HasKey<VoyageNumber>(k => k.VoyageNumber);
Недвижимость 'VoyageNumber' не может быть
используется в качестве ключевого свойства объекта
'Domain.Model.Voyages.Voyage', потому что
тип свойства не является допустимым ключом
тип. Только скалярные типы, строки и
byte [] - поддерживаемые типы ключей.
а также, когда я пытаюсь это сделать:
modelBuilder.Entity<Voyage>().HasKey<string>(k => k.VoyageNumber.Id);
Выражение свойств 'k =>
k.VoyageNumber.Id 'недействителен.
выражение должно представлять
свойство: C #: 't => t.MyProperty'
Неужели мне действительно нужно уничтожить мой VoyageNumber и заменить его на примитивный тип?