Работя по проект MVC3 и ние създадохме нашата проектна архитектура, за да поддържаме нашите класове нещо подобно:
- Моделните класове са на мястото си по подразбиране в MVC проекта.
- Добавихме новия проект Entity, който съдържа свойството, което съответства на имената на полетата (колоните) на базата данни.
- Отделен проект за (Достъп до данни по-късно) DAL и (Слой за бизнес достъп) BAL.
Сега как работи всичко:
Класовете на модела съдържат свойствата, които картографират свойствата в проекта Entity, а също и някои допълнителни свойства, които са ни необходими по време на нашата разработка като помощни свойства за напр. Свойство SubmissionType, за да проверите какъв тип подаване сме направили със същия метод на публикуване като Запазване, Актуализиране или Изтриване.
Проектът Entity ще съдържа само свойствата, които картографират имената на колоните в базата данни, а BAL ще взаимодейства с класовете на проекта Entity, за да получи или присвои стойностите, които се нуждаят от работа с база данни.
И класовете в проекта Entity ще получат или присвоят стойностите на/от класовете на модела. Това е всичко, защото основният ни проект може да има препратка към проекти на Entity и BAL, но не и обратното.
Добре сега въпросът е как ще се направят тези съпоставяния? Имам предвид присвояване на стойности от модел към класове Entity и обратно. За целта трябва да добавим dll в нашия проект „Omu.ValueInjecter“. който можете да изтеглите от тук. Просто трябва да го добавите в нашето приложение и то ще се погрижи за картографирането на нещата само в един ред като този:
EmployeeEntities entity = new EmployeeEntities();
entity.InjectFrom(model);
Тук присвоявам стойността от модел на обект, който получих от метода post. Сега този обект ще бъде предаден към BAL и от BAL към DAL. Чрез прилагането на това решение дори не е необходимо да премествате модела си извън проекта си, което е болезнено усилие, предполагам.
Надяваме се, че това решение ще ви помогне
person
Jitender Kumar
schedule
01.05.2013