C# 实体框架,与已有实体建立0-1关系
我有一个现有实体用户。现在我正在尝试创建一个新实体联系人,与用户建立0-1关系C# 实体框架,与已有实体建立0-1关系,c#,entity-framework,C#,Entity Framework,我有一个现有实体用户。现在我正在尝试创建一个新实体联系人,与用户建立0-1关系 class联系人 { 公共int Id{get;set;} 公共字符串名称{get;set;} public int?UserId{get;set;} 公共虚拟用户用户{get;set;} } 所有建议都涉及以下内容: modelBuilder.Entity() .has可选(t=>t.TheUser) .与期权相关(u=>u.TheConatct); 但这意味着我们必须将OnAct属性添加到现有的用户实体中。实
class联系人
{
公共int Id{get;set;}
公共字符串名称{get;set;}
public int?UserId{get;set;}
公共虚拟用户用户{get;set;}
}
所有建议都涉及以下内容:
modelBuilder.Entity()
.has可选(t=>t.TheUser)
.与期权相关(u=>u.TheConatct);
但这意味着我们必须将OnAct属性添加到现有的用户实体中。实际上,我不想对现有的实体进行任何修改。我需要定义一个外键表单Contact to User entity,并可以通过User属性从Contact访问用户实体
更新:
如果使用ForeignKey属性对属性进行注释:
然后,ObjectContext.CreateDatabase()
的结果还将包括已存在表的create语句(取决于与用户有关系的实体)
当然,我们讨论的是“实体框架6代码优先”,同样,我对1-1关系也有同样的问题
我的想法是,我不能改变现有实体用户来为新实体联系人添加额外属性
我想知道是否有办法克服这个问题< p>我不知道你使用的是哪个版本的实体框架,我假设你首先使用代码,但是你可能需要考虑使用一对多关系而不是0-1。
我不相信你想要的方式支持0-1,但是你可以通过一对多(即使你的“多”只能由1来模拟)只需使用另一个重载:
modelBuilder.Entity<User>()
.HasOptional(t => t.TheUser)
.WithOptionalDependent();
modelBuilder.Entity()
.has可选(t=>t.TheUser)
.使用OptionalDependent();
他使用的EF版本具有0-1关系。不,这一点没有提及。这两个重载都使用OptionalDependent。
modelBuilder.Entity<User>()
.HasOptional(t => t.TheUser)
.WithOptionalDependent();