导航属性从依赖到主体

时间:2015-04-06 10:41:40

标签: ef-code-first foreign-keys entity-framework-6 entity-relationship

我有两个实体

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; }
}

在我的业务中,首先我们创建人员,然后我们通过选择一个人来创建员工,同时为员工选择人员我只想选择与员工无关的人员,我无法想象如何配置员工人物实体中的财产

2 个答案:

答案 0 :(得分: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; }
}

认为应该这样做,反向属性创建映射所以只需要从一方完成。

希望这就是你要找的东西。

答案 1 :(得分:0)

我找到了答案,不知道它是否是最好的!

jobQuery = jobQuery.Where(jb => !Context.Employees.Any(emp => emp.JobId == jb.Id));