【问题标题】:Entity Framework, Create 0-1 relation with existed entity实体框架,与现有实体建立 0-1 关系
【发布时间】:2016-09-09 09:07:56
【问题描述】:

我有一个现有的实体用户。现在我正在尝试创建一个与用户 0-1 关系的新实体 Contact

class Contact
{
    public int Id {get; set;}
    public string Name {get; set;}
    public int? UserId {get; set;}
    public virtual User TheUser{get; set;}
}

所有建议都涉及到这样的事情:

modelBuilder.Entity<User>()
    .HasOptional(t => t.TheUser)
    .WithOptionalDependent(u => u.TheConatct);

但这意味着我们必须将 TheConatct 属性添加到现有的 User 实体。实际上我不想对现有实体进行任何修改。我需要定义一个外键表单 ContactUser 实体,并且可以从 Contact 访问 User 实体通过 TheUser 属性。

更新: 如果我使用 ForeignKey 属性来注释属性:

class Contact
{
    public int Id {get; set;}
    public string Name {get; set;}
    public int? UserId {get; set;}
    [ForeignKey("UserId")]
    public virtual User TheUser{get; set;}
}

然后,ObjectContext.CreateDatabase() 的结果还将包括对已存在表的创建语句(取决于与用户有关系的实体)。

当然我们说的是“Entity Framework 6 Code First”,另外,我也有同样的问题,1-1 关系。

想法,我无法更改现有实体 User 为新实体 Contact

添加其他属性

不知道有没有办法解决这个问题

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    只需使用另一个重载:

    modelBuilder.Entity<User>()
        .HasOptional(t => t.TheUser)
        .WithOptionalDependent();
    

    【讨论】:

      【解决方案2】:

      我不知道您使用的是哪个版本的实体框架,我假设您使用的是 Code First,但您可能必须考虑使用一对多关系而不是 0-1。

      我不相信你想要的方式支持 0-1,但你可以通过一对多来模拟(即使你的“多”只会是 1)

      【讨论】:

      • 他正在使用具有 0-1 关系的 EF 版本。
      • 不,没有提到。
      • WithOptionalDependentexists since 6.0.0-beta1 的两个重载。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多