Лучше ли мне использовать класс или просто идентификатор для внешнего ключа структуры сущности? - PullRequest
2 голосов
/ 12 мая 2011

Проще говоря, у меня есть таблица «Identity», в которой есть ID и имя пользователя, у меня есть другая таблица, в которой есть записи, «принадлежащие» человеку, по этой причине мне нужен FK, который ссылается на таблицу Identity.

Например: Class "Identity" - int ID, string username.

Мне просто интересно, что из следующего лучше:

  1. Class "test" - int ID, string data, Identity identity

  2. Class "test" - int ID, string data, int identity_id - с аннотацией, определяемой как внешний ключ.

Я лично использую первое и видел, что EF в основном делает второе за сценой, ноМне было просто интересно, какие есть преимущества / недостатки и что лучше?

1 Ответ

3 голосов
/ 12 мая 2011

С объектно-ориентированной точки зрения первое лучше, потому что у вас есть ссылка на связанный объект, и это то, что вы ожидаете при работе с объектами. В базе данных это выполняется внешним ключом, который определяет связь между двумя записями.

Entity Framework предлагает как правильный объектно-ориентированный подход (первый), так и подход, в котором вы также включаете свойство внешнего ключа в объект. Причина в том, что раскрытие свойства FK значительно упростит некоторые операции. Наиболее распространенное решение для второго подхода:

public class Test
{
    public int Id { get; set; }
    public string Data { get; set; }
    [ForeignKey("Identity")]
    public int IdentityId { get; set; }
    public Identity Identity { get; set; }
}

У вас есть доступ как к собственности FK, так и к сущности. Эти подходы имеют названия: Независимая ассоциация (первая) и Ассоциация внешних ключей (вторая). Между ними больше различий - я описал их в другом ответе .

...