Каковы плюсы и минусы опции «включить столбцы внешнего ключа в модель» в EF 4 - PullRequest
3 голосов
/ 11 июня 2010

В EF4 появилась новая функция «Включить столбцы внешнего ключа в модель».Что послужило мотивацией для добавления этой функции, и есть ли какие-то особые затруднения, связанные с ее отключением или включением при создании модели из существующей базы данных?

1 Ответ

2 голосов
/ 13 июня 2010

Не зная истинной мотивации, я думаю, что ценность этих дополнительных столбцов возникает, когда вы выставляете свои сущности через веб-сервисы или непосредственно на уровне представления, что, кстати, я лично не рекомендую или рекомендую.

Рассмотрим следующие примеры.

Если у вас не было свойств внешнего ключа, тогда ваш клиентский код будет выглядеть следующим образом.Скорее всего, вы не захотите загружать экземпляр категории из хранилища данных, поэтому в итоге вы создаете новый экземпляр категории с только Id, установленным только для представления отношения FK.

        var product = new Product
        {
           Category = new Category {Id = 1},
           Name = "Product 1"
        };

В предыдущей версии Entity Framework это было еще более грязно, и вы получили такой код.

        var product = new Product();
        product.Name = "Product 1";
        product.CategoryReference = new EntityReference<Category>();
        product.CategoryReference.SetEntityKey<Category>(1); 

Хотя это может быть не чисто, я лично думаю, что это намного легче читать и меньше работать для клиента.

        var product = new Product
        {
            CategoryId = 1,
            Name = "Product 1"
        };

Плюсы

Упрощенное программирование для клиентов, работающих с вашими сущностями.

Минусы

Не совсем чисто с точки зрения DDD иметь два свойства в вашей сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...