Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / По какому принципу вы организуете DAL в своих проектах с использованием EF? / 5 сообщений из 5, страница 1 из 1
18.03.2010, 18:12
    #36529330
viv
viv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По какому принципу вы организуете DAL в своих проектах с использованием EF?
Интересует сама структура DAL и взаимодействие с BLL.
Учитывая что модель базы данных может меняться в развитием проекта.

Спасибо.
...
Рейтинг: 0 / 0
18.03.2010, 18:44
    #36529416
viv
viv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По какому принципу вы организуете DAL в своих проектах с использованием EF?
Смотрел видео по ASP.NET MVC Гайдара Магданурова.

В качестве примера у него следующая схема.

MvsBugDataContext - это класс который генерит сама EF
DataManager - это общий класс с помощью которого мы работаем со всеми классами репозитариями.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
namespace TaskManager.Models
{
    public class DataManager
    {
        private MvsBugDataContext _datacontext;
        
        public DataManager(string connectionstring)
        {
            _datacontext = new MvsBugDataContext(connectionstring);
        }

        private MembershipRepository _membershipRepository;
        public MembershipRepository Membership
        {
            get
            {
                if (_membershipRepository == null)
                {
                   _membershipRepository = new MembershipRepository();
                }
                return _membershipRepository;
            }
        }

        private TaskRepository _taskRepository;
        public TaskRepository Tasks
        {
            get
            {
                if (_taskRepository == null)
                {
                    _taskRepository = new TaskRepository(_datacontext);
                }
                return _taskRepository;
            }
        }

        private StateRepository _stateRepository;
        public StateRepository States
        {
            get
            {
                if (_stateRepository == null)
                {
                    _stateRepository = new StateRepository(_datacontext);
                }
                return _stateRepository;
            }
        }
    }
}



дальше идут отдельные классы репозитарии

например

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
namespace TaskManager.Models
{
    public class TaskRepository
    {
        private MvsBugDataContext _datacontects;

        public TaskRepository(MvsBugDataContext datacontext)
        {
            _datacontects = datacontext;
        }

        public IEnumerable<Task> GetTasks()
        {
            return _datacontects.Tasks.OrderBy(s => s.AssignedOn);
        }

        public Task GetTask(int taskId)
        {
            return _datacontects.Tasks.SingleOrDefault(t => t.TaskId == taskId);
        }

        public Task CreateTask(string title, string text)
        {
            Task t = new Task { Title = title, Text = text };
            _datacontects.Tasks.InsertOnSubmit(t);
            _datacontects.SubmitChanges();
            return t; 
        }

        public void UpdateTask(Task t)
        {
            Task dbTask = GetTask(t.TaskId);
            dbTask.AssignedOn = t.AssignedOn;
            dbTask.Title = t.Title;
            dbTask.Text = t.Text;
            dbTask.StateId = t.StateId;
            _datacontects.SubmitChanges();
        }

        public void DeleteTask(int taskId)
        {
            Task t = GetTask(taskId);
            _datacontects.Tasks.DeleteOnSubmit(t);
            _datacontects.SubmitChanges();
        }
    }
}

А уже в уровне представления используется объект DataManager

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
namespace TaskManager.Controllers
{
    public class TaskController : Controller
    {
        private DataManager _dataManager;

        public TaskController(DataManager dataManager)
        {
            _dataManager = dataManager;
        }

        public ActionResult List()
        {
            ViewData["Title"] = "Tasks List";
            ViewData["Tasks"] = _dataManager.Tasks.GetTasks();
            return View();
        }

        public ActionResult Task(int id)
        {
            ViewData.Model = _dataManager.Tasks.GetTask(id);
            return View();
        }

    }
}

Но тут отсутствует BLL как таковой. Вернее он как-то слишком размыт.
...
Рейтинг: 0 / 0
19.03.2010, 18:42
    #36531795
anabis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По какому принципу вы организуете DAL в своих проектах с использованием EF?
...
Рейтинг: 0 / 0
19.03.2010, 21:42
    #36531996
VitaliyBoris
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По какому принципу вы организуете DAL в своих проектах с использованием EF?
viv,

Так это ж MVC, там и DAL и BLL в MODEL.... А в WinForms, как реализована трехзвенка, можно посмотреть и Марко Беллиньясо и его пивнушке. Про MVC хорошо написал Стивен Сандерсон...
...
Рейтинг: 0 / 0
21.03.2010, 23:41
    #36533610
viv
viv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
По какому принципу вы организуете DAL в своих проектах с использованием EF?
гугол выплюнул тут и тута
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / По какому принципу вы организуете DAL в своих проектах с использованием EF? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]