流利的Api - 人与创造

时间:2015-10-05 08:01:29

标签: c# asp.net ef-code-first ef-fluent-api

我遇到了问题。我在Entity Framework中使用了两个类。 第一个是人类: 使用int id,字符串名称和操作创建(包括外键)。 第二个是动作类。 有id,时间和一个人(包括外键)。 当我尝试迁移这个时,我得到一个错误,我应该使用Fluent Api来创建它之间的关系。 我搜索了一下,但接缝是一个我无法找到相关信息的案例。

public class Person
{
    [Key]
    public int IdPerson { get; set; }

    public string Name{ get; set; }

    public int? CreationId { get; set; }
    [ForeignKey("CreationId")]
    public Action Creation{ get; set; }
}

public class Action
{
    [Key]
    public int IdAction { get; set; }

    [Required]
    [Column(TypeName = "DateTime2")]
    public DateTime Moment { get; set; }

    public int? PersonId { get; set; }
    [ForeignKey("PersonId")]
    public Person Person { get; set; }
}

错误消息是德语:

  

Das Prinzipalende einer Zuordnung zwischen den Typen   'FunWeb.Models.Core.Person'und'FunWeb.Models.Core.Aktion'konten   nicht ermittelt werden。 Das Prinzipalende dieser Zuordnung muss   mithilfe der Fluent-APIfürBeziehungenoder mithilfe von   Datenanmerkungen探索konfiguriert werden。

但它说我需要自己配置关系。

对不起我的英文,谢谢你的帮助

修改 我试过了:

modelBuilder.Entity<Person>().HasRequired(p => p.Creation).WithOptional(a => a.Person);

但我收到以下错误:

  

Das'OmportlyKeyAttribute'derEigenschaft'Personal'fürdenTyp'Modes.Core.Action'istungültig。 DerFremdschlüsselname'PersonId'wurdeimabhängigenType'Modes.Core.Person'nichtgefunden。 Der Name-Wert muss eine durch Trennzeichen getrennte Liste mit NamenvonFremdschlüsseleigenschaftensein。

我尝试翻译:类型Action的propaty Person的ForeignKeyAttribute是有效的。在“Models.Core.Person”中找不到ForeignKey'PersonId'。名称值必须是ForeignKeyAttributes的名称的单独列表。

1 个答案:

答案 0 :(得分:0)

您的问题是ForeignKey属性负责一对多关系。但似乎你想要一对一的关系。要设置一对一,你应该使用流畅的api。 它将类似于:

READWRITE