0

У меня есть два Сущностисвойства навигации от зависящему принципала

public class Person 
{ 
    public virtual int ID { get; set; } 
    public virtual string Name { get; set; } 
    public virtual Employee Employee { get; set; } 
} 

public class Employee 
{ 
    public virtual int ID { get; set; } 
    public virtual string Code { get; set; } 
    public virtual int PersonId { get; set; } 
    [ForeignKey("PersonId")] 
    public virtual Person Person { get; set; } 
} 

в моем бизнесе первым мы создаем человек, то мы создаем работник, выбрав человек, при выборе человека для сотрудника я хочу, чтобы выбрать только лицо которые не связаны с сотрудником, я не мог понять, как настроить свойство Employee в Person Entity

ответ

0

Если вы выбираете людей, которые не связаны с конкретным сотрудником, тогда у вас не должно быть собственности для этого. У вас должна быть только ссылка на связанные объекты. Попробуйте сделать это в LINQ, он должен получить всех людей, которые не имеют отношения к сотруднику.

var people = context.People.Where(x => x.Employee == null); 

public class Person 
{ 
    public virtual int ID { get; set; } 
    public virtual string Name { get; set; } 
    public virtual Employee Employee { get; set; } 
} 

public class Employee 
{ 
    public virtual int ID { get; set; } 
    public virtual string Code { get; set; } 
    public virtual int PersonId { get; set; } 
    [ForeignKey("PersonId")] 
    [InverseProperty("Employee")] 
    public virtual Person Person { get; set; } 
} 

Подумайте, что это нужно сделать, свойство inverse создает сопоставление, поэтому его нужно выполнять только с одной стороны.

Надеюсь, это то, что вы искали.

+0

я не сотрудник еще, я создаю сотрудника, выбрав человека, и я хочу, чтобы исключить лиц, которые уже назначенные сотрудникам, а также я не использовать контекст непосредственно, я работа с репозиторием –

+0

А так вы хотите, чтобы все люди, у которых нет сотрудника? – Dhunt

+0

да, это правда –

0

Я понял ответ, не знаю, если это самое лучшее!

jobQuery = jobQuery.Where(jb => !Context.Employees.Any(emp => emp.JobId == jb.Id)); 
Смежные вопросы