Entity Framework - Определение существования Отношения без свойства навигации на одном конце - PullRequest
0 голосов
/ 02 декабря 2011

В моем приложении есть следующие две сущности (использующие Code First):

public class Note
{
    public int NoteId { get; set; }
    public string Text { get; set; }
}

public class Decision 
{
    // PK/FK
    public int NoteId { get; set; }

    // other fields ...

    public virtual Note Note { get; set; }
}

Я настроил свои отношения следующим образом:

modelBuilder.Entity<Decision>().HasRequired(d => d.Note).WithOptional();

Решение должно иметь примечание, ноПримечание не всегда имеет решение.Отображение 1: 1 с одной стороной является необязательным.

Я хотел бы, чтобы в моей заметке было свойство, которое сообщало бы мне, есть ли решение для него.Что-то вроде:

public bool HasDecision 
{
    get
    {
        // not sure what to do here
    }
}

Есть ли способ сделать это, если Decision не будет лениво загруженным свойством в Note?

1 Ответ

0 голосов
/ 02 декабря 2011

Вам нужно будет выполнить точный запрос.Не существует такой вещи, как «ленивая загрузка прокси для скалярных свойств».Ленивая загрузка поддерживается только для свойств навигации.Ваша сущность должна иметь ссылку на контекст, если вы хотите иметь HasDecision в качестве свойства сущности.Я бы предпочел создать репозиторий или сервисный метод, например, так:

public bool HasDecision(Note note)
{
    return _context.Decisions.Any(d => d.NoteId == note.NoteId);
}
...