Для тех, кто не знает, как использовать PDO (исходя из функций В основном читайте mysql_
), я сделал очень, очень простую PDO-обертку , которая представляет собой один файл. Он существует, чтобы показать, насколько легко выполнять все обычные приложения, которые необходимо выполнить. Работает с PostgreSQL, MySQL и SQLite.
Мне нужен один столбец
$count = DB::column('SELECT COUNT(*) FROM `user`);
Мне нужны результаты массива (key => value) (т. е. для создания selectbox)
$pairs = DB::pairs('SELECT `id`, `username` FROM `user`);
Мне нужен результат одной строки
$user = DB::row('SELECT * FROM `user` WHERE `id` = ?', array($user_id));
Мне нужен массив результатов
$banned_users = DB::fetch('SELECT * FROM `user` WHERE `banned` = ?', array(TRUE));
Вы не можете записать частичный класс через проекты. Частичный класс является единственным временем компиляции куском синтаксического сахара - целый тип заканчивается в единственном блоке, т.е. одном проекте.
(Ваш исходный файл DAL должен был бы объявить, что класс был неравнодушен также, между прочим.)
Я не могу ответить на Ваш вопрос о лучшем способе организовать Ваши слои, но я могу попытаться ответить на Ваш вопрос о том, как лучше всего эмулировать частичные классы.
Вот несколько мыслей:
Частичные классы должны существовать в том же блоке. Иначе, как компилятор решил бы, где объединить частичные классы с?
Я соглашаюсь с ответом Jon Skeet.
я не думаю, что это был бы хороший выбор приблизиться к проблеме как это так или иначе. Уже существуют хорошие шаблоны разработки там, которые демонстрируют лучший способ разделить Ваши уровни/слои кода, и это - просто немного синтаксического сахара так, чтобы Microsoft могла заставить файлы разработчика WinForms/WebForms разделить и препятствовать тому, чтобы люди повредили их.
В то время как я согласовываю с Вами Neil когда дело доходит до pre-linq разработки, мне также жаль, что я не мог быть в состоянии сделать это для разделения бизнес-логики от частичных классов, сгенерированных разработчиком Linq2SQL. Например:
Northind.DAL (prj)
-NorthindDataContext (EntityNamespace set to "Northwind.BLL")
--Product() (Entity, partial class auto-generated)
--Category() (Entity, partial class auto-generated)
--Supplier() (Entity, partial class auto-generated)
Northind.BLL (prj)
-Product() : IMyCustomEnityInterface, BaseEntity (override OnValidate(), etc)
-Category() : IMyCustomEnityInterface, BaseEntity (override OnValidate(), etc)
-Supplier() : IMyCustomEnityInterface, BaseEntity (override OnValidate(), etc)
, К сожалению, мы не можем сделать этого... на самом деле, я хотел бы знать что рекомендуемый способ разделить слои/уровни при использовании LINQ.