实体框架 - 单向一对一关系

时间:2017-10-05 16:24:14

标签: entity-framework

我需要在两个表之间建立一对一的关系,但只有单向关系。

[Accounts]
account_id  
name  
etc...

[SalesReps]
sales_rep_id  
account_id
account
etc...

因此,我希望SalesReps表与Accounts有关系,但我不希望Accounts引用SalesReps。

我试过了:

modelBuilder.Entity<sales_rep>()
.HasRequired(a => a.account)
.WithMany()
.HasForeignKey(a => a.account_id);

但这给了我:

  

sales_rep_account_Source ::多重性在Role&#39; sales_rep_account_Source&#39;中无效。在关系&#39; sales_rep_account&#39;。由于“从属角色”是指关键属性,因此“从属角色”的多重性的上限必须为“&#39; 1”。

2 个答案:

答案 0 :(得分:0)

执行此操作的方法是使用WithRequiredDependent()配置。您的实体将是:

public class Account
{
  public int Id { get; set; }
  public string Name { get; set; }
}

public class SalesRep
{
  public int Id { get; set; }
  public Account Account { get; set; }
}

在OnModelCreating()方法中,您应该这样做:

modelBuilder.Entity<Account>().HasKey(x => x.Id);
modelBuilder.Entity<SalesRep>().HasKey(x => x.Id);
modelBuilder.Entity<SalesRep>().HasRequired(x => x.Account).WithRequiredDependent().Map(x => x.MapKey("AccountId"));

答案 1 :(得分:0)

事实证明,我所要做的就是:

modelBuilder.Entity<sales_rep>()
            .HasRequired(a => a.account)
            .WithOptional();