2009-08-24 7 views
0

Я фанат Ef и хочу его использовать, но я не обязательно поклонник того, как работают ассоциации. Если у меня есть простая таблица поиска, содержащая, возможно, 3 строки в ней и обычно будет рассматриваться как перечисление в коде, мне не нравится, что мне действительно нужно сделать это, чтобы присвоить значение с использованием ассоциирования в EF:Entity Framework «Код пахнет» Вопрос

myEntity.MyLookup = db.MyLookups.First (ml => ml.MyLookupId == 5);

Я имею в виду, что он не только выглядит фанки, но и затем снова запрашивает db, чтобы я мог эффективно присвоить значение «5». Я знаю, что это также возможно, установив EntityKey через MyLookupReference, но это кажется еще более приятным.

Вопрос в том, можно ли избавиться от представления магазина ассоциированного объекта и просто рассматривать все как скаляр на моих объектах, не имея свойств навигации и позволяя мне просто делать соединения, когда это необходимо?

Кроме того, если это возможно, оказывает ли это какое-либо влияние на то, какие объекты отслеживаются или что-то в этом роде? Благодаря!

ответ

2

Я думаю, что это еще одна причина для сохранения Business Logic отдельно от уровней доступа к данным. Вы, конечно, можете это сделать.

В качестве примера, если у вас есть таблица User и таблица UserTypes. Ваш уровень данных должен иметь дело с этим, но бизнес-уровень не должен знать об этом, предполагая, что у вас есть какой-то заводский метод в вашем адаптере данных, который берет пользователя и тип пользователя и преобразует их в администратора (для пример).

Не уверен, что это помогает, просто подумал, что я бы дал свое мнение.

0

Значения внешнего ключа - это боль в EF v1. То, как вы делаете это выше, является единственным способом, если вы не готовы самостоятельно создать EntityKey.

EF v4.0 покончит с этой головной болью с помощью «Ассоциаций FK». Ассоциации FK являются обновляемыми скалярными значениями, которые представляют взаимосвязь.

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