Вы должны использовать SqlParameter с запросом, содержащим параметры: Это должно быть так:
SqlCommand cmd = new SqlCommand("INSERT INTO USERS(YEAR,NAME,RATE,TYPE) VALUES (@YEAR, @NAME, @RATE, @TYPE)", connection);
cmd.Parameters.Add(new SqlParameter("@YEAR", yearcombo.Text));
cmd.Parameters.Add(new SqlParameter("@NAME", name.Text));
cmd.Parameters.Add(new SqlParameter("@RATE", Convert.ToDecimal(rate.Text, CultureInfo.CurrentCulture)));
cmd.Parameters.Add(new SqlParameter("@TYPE", "WORKERS"));
Я не проверял его, но он преобразовал ваш параметр в правильное десятичное число для Ваш запрос. Также лучше использовать SqlParameter для проблем безопасности (предотвращая SQL-инъекцию )
На самом деле я делаю нечто подобное. Не та же цель, но факт использования DDD для создания приложения, работающего без AD.
Я считаю, что LDAP - это мой уровень персистентности. Так что моя модель предметной области состоит из объектов, относящихся к моему приложению, а не только к AD. В этом случае моя реализация репозитория - это все специфичные для AD вещи, беря мои объекты и отображая их в объекты AD и так далее. Я на самом деле создал IRepository для базы, а затем IUserRepository и т. Д., Как это необходимо для агрегатов домена. Реализации тогда названы как ADUserRepository.
Я считаю, что это самый простой способ справиться со всем этим и сохранить свои мысли; это также облегчает тестирование того, что я делаю (не уверен, что это поможет с вашим приложением).
Я не знаю никаких инструментов OLM (хороший термин), которые вы могли бы использовать; Я' Я только что отобразил это вручную, так как я действительно интересуюсь только подмножеством того, что AD имеет в этом.