2015-10-05 50 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