Для чего это нужно?
Если вы программируете на Visual Basic .NET или C# и используете в ваших проектах базы данных MS Access или MS SQL Server, данный сервис поможет создавать объекты (классы) для ваших данных. Работать с классами значительно проще и удобней. Полностью исключаются опечатки в называниях таблиц и полей, конечный код получается безопасным, за счет явной типизации полностью исключается уязвимость типа SQL Injection. Благодаря ООП вы можете с легкостью создавать сложную иерархию данных.
Например, у вас есть таблица MyTable. Чтобы обратиться к ней обычным способом и получить, добавить, изменить или удалить данные, вам придется писать для этого соответствующие SQL-запросы, создавать Connection, Command, DataReader, DataTable, DataRow и т.п. Это довольно много кода.
Using myConn As New SqlConnection("Data Source=FOXTOOLS;Initial Catalog=foxtools;Trusted_Connection=True; ")
Dim myCmd As New SqlCommand("SELECT * FROM MyTable WHERE id = @id"), myConn)
myCmd.Parameters.Add("@id", SqlDbType.Int).Value = 1
Dim DR As SqlDataReader = myCmd.ExecuteReader()
'...
'...
End Using
Не исключено, что работая с именами таблиц и полей, вы можете допустить досадную опечатку, которая застопорит, пускай и ненадолго, весь рабочий процесс. В зависимости от вашего опыта, если вы будете формировать запросы голым SQL, не используя CommandParameters, ваш код будет уязвим для SQL Injection, что особо опасно в веб-программировании.
Dim myCmd As New SqlCommand("SELECT * FROM MyTable WHERE id = 1 AND name = '" & Request("name") & "'"), myConn)
Вполне возможно, что со временем вы просто забудете, какая структура у ваших данных и вам придется перелопатить немало кода, чтобы понять, что к чему.
При работе с объектами, по большому счету, вам не придется писать какой-либо код. У вас будет класс с именем вашей таблицы – MyTable, и у этого класса будут свойства – поля таблицы, и три метода для работы с данными – Load, Save, Delete. Вам не нужно помнить, какая структура у вашей БД. Работая с объектом, вы будете видеть, какие есть поля (свойства) у таблицы (класса) и сможете менять их значения. Вы не сможете допустить ошибку в именах полей и таблиц, т.к. у вас будут четко определенные имена классов и свойств. При желании, вы даже можете написать XML-комментарии к свойствам (полям) класса (таблицы), это еще больше упростит работу. SQL Injection исключена, вам не придется писать SQL-запросы самостоятельно, весь процесс полностью автоматизирован.
Добавляйте новые данные:
Dim t As New MyTable()
t.Name = "FoxTools"
t.Save()
Загружайте данные:
Dim t As New MyTable(1)
Console.WriteLine(t.Name)
Удаляйте данные:
Dim t As New MyTable(1)
t.Delete()
Все достаточно легко и знакомо, никаких Connection, Command и SQL-запросов, только объекты.
Объектное представление данных – это воистину удобно и просто!
Объектно-реляционное отображение
Объектно-реляционное отображение (Object-Relational Mapping - ORM) – это представление базы данных в виде набора классов.
Работать с объектами, особенно в .NET Framework, значительно удобней и проще, нежели возиться с данными посредствам ADO .NET.
Благодаря ORM, можно с легкость создавать и манипулировать сложнейшими вещами с огромным количеством связей данных.
Но в тоже время, при работе с ORM необходимо хорошо продумывать архитектуру проекта, поскольку малейшие недочеты могут привести к тому, что придется переписывать большое количество кода.