我有一个现有实体用户。现在我正在尝试创建一个新的实体联系,与用户的关系为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);
但这意味着我们必须将 TheConatct 属性添加到现有的用户实体。实际上我不想对现有实体进行任何修改。我需要定义外键的所有内容联系到用户实体,并且可以从联系人访问用户实体通过 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()
的结果还将包括已存在表的create语句(取决于与User有关系的实体)。
当然我们在讨论“实体框架6代码优先”,另外,我对1-1关系也有同样的问题。
这个想法,我不能改变现有的实体用户为新实体添加额外的属性联系
我想知道是否有办法克服这个问题
答案 0 :(得分:0)
使用另一个重载:
modelBuilder.Entity<User>()
.HasOptional(t => t.TheUser)
.WithOptionalDependent();
答案 1 :(得分:-1)
我不知道您使用的是哪个版本的Entity Framework,我假设您使用的是Code First,但您可能需要考虑使用一对多关系而不是0-1。
我不相信你想要它的方式支持0-1,但是你可以通过一对多来模拟(即使你的“很多”只会是1)