实体框架,与现有实体创建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实体中。其实我并不想对已经存在的实体做任何修改。我需要定义一个外键形式Contact到User实体,并可以通过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 添加额外的属性我想知道是否有办法克服这个问题
使用另一个重载:
modelBuilder.Entity<User>()
.HasOptional(t => t.TheUser)
.WithOptionalDependent();
我不知道你使用的是哪个版本的实体框架,我假设你使用的是代码优先,但你可能不得不考虑使用一对多的关系,而不是0-1。
我不相信有支持0-1在你想要的方式,但你可以模拟有一个一对多(即使你的"多"将永远只有1)