2015-10-05 2 views
-2

У меня проблема. У меня есть два класса, которые я использую в Entity Framework. Первый - это человек Класс: С int id, имя строки и действие (включая внешний ключ). Второй - класс действия. С идентификатором, временем и лицом (включая иностранный ключ). Когда я пытаюсь выполнить миграцию, я получаю сообщение об ошибке, которое я должен использовать Fluent Api, чтобы создать связь между этим. Я искал немного, но это швы, чтобы быть случаем, о котором я не мог найти информацию.Fluent Api - Person and Creation

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.

Но он говорит, что мне нужно настроить связь по моей собственной личности.

Извините за мой английский и спасибо за вашу помощь

Edit: Я пробовал:

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.

Я пытаюсь перевести : ForeignKeyAttribute of the propaty Лицо для типа Действие действует. ForeignKey 'PersonId' не удалось найти в «Models.Core.Person». Значение имени должно быть отдельным списком имен для 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