实体框架,与现有实体创建0-1关系

本文关键字:实体 创建 关系 框架 | 更新日期: 2023-09-27 18:06:30

我有一个现有的实体User。现在我试图创建一个新的实体联系人与0-1的关系与用户。

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);
但这意味着我们必须将 contact 属性添加到已有的User实体中。其实我并不想对已经存在的实体做任何修改。我需要定义一个外键形式ContactUser实体,并可以通过TheUser属性从Contact访问User实体。

更新:如果我使用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()的结果还将包括已经存在的表的create语句(取决于与User有关系的实体)。

当然我们谈论的是"实体框架6代码优先",此外,我也有同样的问题与1-1关系。

这个想法,我不能改变现有的实体User为新实体Contact 添加额外的属性

我想知道是否有办法克服这个问题

实体框架,与现有实体创建0-1关系

使用另一个重载:

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

我不知道你使用的是哪个版本的实体框架,我假设你使用的是代码优先,但你可能不得不考虑使用一对多的关系,而不是0-1。

我不相信有支持0-1在你想要的方式,但你可以模拟有一个一对多(即使你的"多"将永远只有1)