Нужен ли отдельный уровень данных при использовании Linq to Entities? - PullRequest
1 голос
/ 10 августа 2009

При использовании Linq to Entities по-прежнему необходимо абстрагировать доступ к базе данных с использованием отдельного уровня данных или приемлемо (или даже рекомендуется) выполнять запросы Linq непосредственно из кода (после получения, добавления, обновления, и функция удаления уже встроена в Entity Framework)?

Ответы [ 4 ]

4 голосов
/ 10 августа 2009

Мы используем Linq to EF, и у нас все еще есть отдельный слой данных.

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

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

2 голосов
/ 10 августа 2009

Linq-to-Entities - это деталь реализации. Уровень данных предназначен для отвлечения реализации от взаимодействия с данными. Это обеспечивает надежность вашей системы, если вы обнаружите, что Linq-to-entity не подходит, и вам нужно изменить реализацию. Поэтому да, вам все еще нужен слой данных.

0 голосов
/ 10 августа 2009

Это зависит от того, насколько близка мертвая черта, насколько велико приложение, которое вы хотите разработать, и, вероятно, еще много.

Я бы сказал, да, реализовать слой данных . Например: что, если приложение должно было бы работать с использованием базы данных Oracle (когда-нибудь в будущем) ... все станет очень быстро.

0 голосов
/ 10 августа 2009

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

Будут интересны некоторые ответы, которые вы получите, поскольку это действительно относится ко всем инструментам OR / M.

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