2015-01-20 3 views
1

У меня есть две таблицы, зависимая таблица имеет внешний ключ, который не является первичным ключом. Это отношение от 0 до 1. Как настроить связь с сущностью framework 6, сначала код, свободный API? Таблицы уже существуют в db.внешний ключ структуры фрейма, где зависимый ключ не является первичным ключом

public class Formula 
{ 
    public int Id { get; set; } /*Primary key*/ 
    public string Name { get; set; } 
} 

public class MayHaveAFormula 
{ 
    public int Id { get; set; } /*Primary key*/ 
    public int? FormulaId { get; set; } /*links to Formula.Id */ 
    public Formula Formula { get; set; } 
} 

ответ

1

Это 0 до 1 отношения

Нет, это не так. Вы хотите это будет, но это отношения «один ко многим». Когда объект имеет независимый внешний ключ (т. Е. Также не является его основным ключом), вы не можете моделировать его как ассоциацию 1: 1 в EF.

Итак, вы моделируете это как обычную ассоциацию 1: n, а в бизнес-логике вы применяете ее 1: 1.

Что вы можете сделать, чтобы помочь обеспечить соблюдение 1: 1, - это создать уникальный индекс на поле FormulaId. Теперь база данных будет бросать уродливое исключение, когда вы пытаетесь создать второй MayHaveAFormula для Formula. Конечно, это не должно заменять бизнес-логику, но это дополнительная гарантия.

+0

Хорошо, это имеет смысл. Таким образом, лучшее, что я могу сделать, это что-то вроде: HasOptional (fsa => fsa.Formula) .WithMany(). HasForeignKey (a => a.FormulaId); - для конфигурации для MayHaveFormulaClass? – user2055119

+0

Да, это стандартное отображение 1: n. –

Смежные вопросы