0

我在迁移中收到此错误:

Person_EventModerator_Target::多重性在关系“Person_EventModerator”中的角色“Person_EventModerator_Target”中无效。因为从属角色属性不是关键属性,所以从属角色的多重性的上限必须是“*”。

这是我的模型(注意:基本实体拥有所有模型的主键):

public class EventModerator : BaseEntity
{
    ......

    // foreign keys
    public int PersonId { get; set; }

    // associations
    [ForeignKey("PersonId")]
    public Person Person { get; set; }

}


 public class Person : BaseEntity
  {
    public Person()
    {
    ....
    // association
    public virtual EventModerator EventModerator { get; set; }

}

我的映射:

        modelBuilder.Entity<Person>()
            .HasOptional(e => e.EventModerator)
            .WithRequired(e => e.Person);

这是 1 比 0.1 的关系。

谁能指出我的错误?

4

2 回答 2

0

好的,这行得通,但坦率地说,我不明白“.WithMany()”的必要性

    internal static void Map(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<EventModerator>()
            .HasRequired(e => e.Person)
            .WithMany()
            .HasForeignKey(e => e.PersonId)
            .WillCascadeOnDelete(false);   
    }
于 2014-08-13T18:30:50.800 回答
0

您的答案不会产生 1 到 0.1 的关系。数据库中的表上生成了另一个键Person,即 nullable EventModerator_Id

要具有 1 到 0.1,从属EventModerator主键也必须是外键。

您可以[Key]PersonId.

[Key]
public int PersonId { get; set; }

或者,由于您有BaseEntity可能具有派生Id属性(默认约定是主键),那么您只需要删除PersonId属性并将外键链接到Id属性。

//public int PersonId { get; set; }

// associations
[ForeignKey("Id")]
public Person Person { get; set; }
于 2014-08-14T03:56:52.697 回答