EF4. 1 Комплексный тип Code First в качестве первичного ключа

В настоящее время я пытаюсь реализовать репозитории для своих объектов домена с помощью 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 'недействителен. В выражение должно представлять m не ищет сжатие, так как данные уже сжаты)

  • Вычислительные требования второстепенные
  • Я должен иметь возможность получить текущую версию документа как можно быстрее (получение более старых версий не критично по времени)
  • Обычно ответы должны содержать как минимум две вещи:

    • Какой двоичный алгоритм сравнения вы бы использовали?
    • Как бы вы структурировали эту систему в соответствии с особенностями PostreSQL?
    5
    задан akosch 2 April 2011 в 10:28
    поделиться