实体框架,与现有实体

时间:2016-09-09 09:07:57

标签: c# entity-framework

我有一个现有实体用户。现在我正在尝试创建一个新的实体联系,与用户的关系为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关系也有同样的问题。

这个想法,我不能改变现有的实体用户为新实体添加额外的属性联系

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

2 个答案:

答案 0 :(得分:0)

使用另一个重载:

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

答案 1 :(得分:-1)

我不知道您使用的是哪个版本的Entity Framework,我假设您使用的是Code First,但您可能需要考虑使用一对多关系而不是0-1。

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