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

Спасибо.
...
Рейтинг: 0 / 0
По какому принципу вы организуете DAL в своих проектах с использованием EF?
    #36529416
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрел видео по 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
По какому принципу вы организуете DAL в своих проектах с использованием EF?
    #36531795
anabis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
По какому принципу вы организуете DAL в своих проектах с использованием EF?
    #36531996
VitaliyBoris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
viv,

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


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