【问题标题】:Fluent Api - Person and CreationFluent Api - 人和创造
【发布时间】: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


【解决方案1】:

您的问题是 ForeignKey 属性负责一对多关系。但似乎你想要一对一的关系。要设置一对一,您应该使用 fluent api。 它会是这样的:

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

【讨论】:

    猜你喜欢
    • 2017-08-12
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2014-07-22
    • 2017-07-22
    相关资源
    最近更新 更多