我遇到了问题。我在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的名称的单独列表。
答案 0 :(得分:0)
您的问题是ForeignKey属性负责一对多关系。但似乎你想要一对一的关系。要设置一对一,你应该使用流畅的api。 它将类似于:
READWRITE