Как сначала отобразить родительский столбец в коде EF 4.1 - PullRequest
4 голосов
/ 16 июля 2011

В моем проекте у меня есть следующая DomainModel.

public class Login
{
    public Guid Id { get; set; }
    public Login CreatedBy {get; set; }
}

Я использую свободную конфигурацию, как показано ниже:

modelBuilder.Entity<Login>()
            .HasKey(x => x.Id)
            .ToTable("Login");

modelBuilder.Entity<Login>()
            .HasOptional(x => x.CreatedBy)
            .WithMany()
            .HasForeignKey(x => x.CreatedBy);

Мой код в хранилище для получения всех данных для входа в систему, как показано ниже:

return from d in Db.Logins.Include("CreatedBy") 
       select d;

Когда я выполняю код, я получаю следующую ошибку:

Компонент внешнего ключа «CreatedBy» не является объявленным свойством для типа «Логин».Убедитесь, что оно не было явно исключено из модели и является допустимым примитивным свойством.

Кто-нибудь может подсказать, что я здесь не так делаю?

Заранее спасибо

1 Ответ

5 голосов
/ 16 июля 2011

.. не был явно исключен из модели и что это допустимое примитивное свойство

Ваше сопоставление внешнего ключа .HasForeignKey(x => x.CreatedBy) не используетсвойство примитива.

public class Login
{
    public Guid Id { get; set; }
    public virtual Login CreatedBy {get; set; }
}

Затем сопоставьте его как

modelBuilder.Entity<Login>()
            .HasKey(x => x.Id)
            .ToTable("Login");

modelBuilder.Entity<Login>()
            .HasOptional(x => x.CreatedBy)
            .WithMany()
            .Map(x => x.MapKey("ForeignKeyColumn"));
...