2015-10-05 45 views
-2

我有一个问题。我有两个类,我在实体框架中使用。 第一个是一个人类: 用int id,字符串名称和动作创建(包括外键)。 第二个是行动课。 带ID,时间和人(包括外键)。 当我尝试迁移这个时,我得到一个错误,我应该使用Fluent Api来创建它之间的关系。 我搜索了一下,但它接近是我无法找到有关信息的情况。流利的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' konnte 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.

我试着翻译:Propaty的ForeignKeyAttribute类型Action的Person是有效的。 “Models.Core.Person”中找不到ForeignKey'PersonId'。名称值需要是ForeignKeyAttributes的名称的分离列表。

+0

而你的问题的其余部分呢? –

+0

抱歉错过了预览按钮并击中了提交。我现在更新了它。 – user3460436

+1

你也可以添加相关的代码和完整的错误信息文本?有关进一步的指导,请参阅[询问帮助](http://stackoverflow.com/help/how-to-ask)。 –

回答

0

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

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

它不工作。请参阅编辑。 – user3460436