【发布时间】:2016-01-01 19:49:48
【问题描述】:
我有一个问题。我在实体框架中使用了两个类。 第一个是人类: 使用 int id、字符串名称和操作创建(包括外键)。 第二个是动作课。 带有 id 、 time 和 person(包括外键)。 当我尝试迁移它时,我得到一个错误,我应该使用 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' 和 'FunWeb.Models.Core.Aktion' 联系 nicht ermittelt werden。 Das Prinzipalende dieser Zuordnung muss mithilfe der Fluent-API für Beziehungen oder mithilfe von Datenanmerkungen explizit konfiguriert werden。
但它说我需要自己配置关系。
对不起我的英语并感谢您的帮助
编辑: 我试过了:
modelBuilder.Entity<Person>().HasRequired(p => p.Creation).WithOptional(a => a.Person);
但我收到以下错误:
Das 'ForeignKeyAttribute' der Eigenschaft 'Person' für den Typ 'Models.Core.Action' ist ungültig。 Der Fremdschlüsselname 'PersonId' wurde im abhängigen Typ 'Models.Core.Person' nicht gefunden。 Der Name-Wert muss eine durch Trennzeichen getrennte Liste mit Namen von Fremdschlüsseleigenschaften sein。
我尝试翻译:Action 类型的属性 Person 的 ForeignKeyAttribute 是有效的。在“Models.Core.Person”中找不到 ForeignKey 'PersonId'。名称值需要是 ForeignKeyAttributes 名称的单独列表。
【问题讨论】:
-
你剩下的问题在哪里?
-
抱歉错过了预览按钮并点击 sumit。我现在已经更新了。
-
能否也添加相关代码和完整的错误消息文本?有关更多指南,请参阅 asking help。
-
好的,给我 5 分钟
标签: c# asp.net ef-code-first ef-fluent-api