0

鉴于我有两个实体:DeputyDeputyProfile

public class Deputy : IdableEntity
{
    [Required]
    public string FirstName { get; set; }

    public string Patronimic { get; set; }

    [Required]
    public string LastName { get; set; }
}

public class DeputyProfile : IdableEntity
{
    [Required]
    public string Dosieur { get; set; }
}

在它们之间建立一对一关系的最佳方法是将导航属性从代理配置文件放置到代理(子到父)或签证诗?

应该是这样吗:

public class DeputyProfile : IdableEntity
{
    [Required]
    public virtual Deputy Deputy{ get; set; }

    [Required]
    public string Dosieur { get; set; }
}

做出该决定的最佳逻辑规则是什么?

PS作为一个孩子IdableEntity给一个班级自己的Guid Id字段。

4

1 回答 1

0

您必须为任何关系选择主(父)端和从属(子)端。你可以自由选择你最喜欢的。对我来说,代理似乎是明确的校长,因为随着您的模型的增长,它可能会拥有更多的关系。

一对一关系由共享主键实现;代理配置文件必须以代理 ID 作为其主键。这将使您的代码如下所示:

public class Deputy
{

   public int ID {get;set;}

   public int ProfileID {get;set;}
   public virtual DeputyProfile Profile {get;set;}

    [Required]
    public string FirstName { get; set; }

    public string Patronimic { get; set; }

    [Required]
    public string LastName { get; set; }
}

public class DeputyProfile
{
    public int DeputyID {get;set}
    public virtual Deputy Deputy {get;set}

    [Required]
    public string Dosieur { get; set; }
}

注意:由于现在实施,每个代理都必须有一个配置文件。如果配置文件是可选的,则将 ProfileID 设为“int?”。

我衷心推荐这个关于在 Entity Framework 4.1 及更高版本中实现关系的优秀系列博客

于 2012-08-03T22:11:21.840 回答