MSSQL не поддерживает BEFORE
триггеры. Самое близкое, которое Вы имеете, INSTEAD OF
триггеры, но их поведение отличается от что BEFORE
триггеры в MySQL.
можно узнать больше о них здесь и отметить, что INSTEAD OF
триггеры "Определяют, что триггер выполняется вместо SQL-оператора инициирования, таким образом переопределяя действия операторов инициирования". Таким образом действия с обновлением не могут произойти, если триггер правильно не пишется/обрабатывается. Каскадные действия также затронуты.
можно вместо этого хотеть использовать другой подход к тому, чего Вы пытаетесь достигнуть.
Вот код для перечисления аудиоустройств на C # с использованием WMI (ссылка System.Management).
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(
"SELECT * FROM Win32_SoundDevice");
ManagementObjectCollection objCollection = objSearcher.Get();
foreach (ManagementObject obj in objCollection)
{
foreach (PropertyData property in obj.Properties)
{
Console.Out.WriteLine(String.Format("{0}:{1}", property.Name, property.Value));
}
}
В результате получается что-то вроде:
Availability: Caption:USB Audio Device ConfigManagerErrorCode:0 ConfigManagerUserConfig:False CreationClassName:Win32_SoundDevice Description:USB Audio Device DeviceID:USB\VID_047F&PID_0CA1&MI_00\6&2C037688&0&0000 DMABufferSize: ErrorCleared: ErrorDescription: InstallDate: LastErrorCode: Manufacturer:(Generic USB Audio) MPU401Address: Name:USB Audio Device PNPDeviceID:USB\VID_047F&PID_0CA1&MI_00\6&2C037688&0&0000 PowerManagementCapabilities: PowerManagementSupported:False ProductName:USB Audio Device Status:OK StatusInfo:3 SystemCreationClassName:Win32_ComputerSystem SystemName: Availability: Caption:Realtek AC'97 Audio for VIA (R) Audio Controller ConfigManagerErrorCode:0 ConfigManagerUserConfig:False CreationClassName:Win32_SoundDevice Description:Realtek AC'97 Audio for VIA (R) Audio Controller DeviceID:PCI\VEN_1106&DEV_3059&SUBSYS_09011558&REV_60\3&61AAA01&1&8D DMABufferSize: ErrorCleared: ErrorDescription: InstallDate: LastErrorCode: Manufacturer:Realtek MPU401Address: Name:Realtek AC'97 Audio for VIA (R) Audio Controller PNPDeviceID:PCI\VEN_1106&DEV_3059&SUBSYS_09011558&REV_60\3&61AAA01&1&8D PowerManagementCapabilities: PowerManagementSupported:False ProductName:Realtek AC'97 Audio for VIA (R) Audio Controller Status:OK StatusInfo:3 SystemCreationClassName:Win32_ComputerSystem SystemName: Availability:
WMI досадно не различает просто устройства ввода и вывода для звука. Однако с помощью управляемого интерфейса DirectSound и класса DevicesCollection которые используют SvgNet для перевода между SVG и GDI +. Это означает, что любой код, использующий GDI + для рисования графика может легко выводить SVG как ну, просто подключив Объект SvgGraphics. Этот объект точно так же, как обычный .NET Графический объект, но создает SVG дерево. Даже такие вещи, как штриховая заливка и реализованы привязки линий.
Поскольку SVG в основном является XML-документом, вы можете реализовать «рисование» сами. Проверьте спецификации на W3C SVG spec . Я сделал это один раз, чтобы сгенерировать изображения подписи SVG, все, что потребовалось, это пара часов и firefox, чтобы проверить сгенерированное изображение.
Конечно, это применимо, если вы генерируете изображение на основе ввода пользователя или если вы не против потратить время преобразования из другого формата векторного изображения.
PS вы можете создать свою собственную оболочку для имитации System.Drawing.Graphics, например DrawLine () для добавления во внутренний буфер и т. д.
Я использовал этот http://svg.codeplex.com/ , и он меня вполне устраивает. По-прежнему есть некоторые ошибки, поэтому вам следует взглянуть на патчи в http://svg.codeplex.com/SourceControl/PatchList.aspx .
Когда я обнаруживаю ошибки, которые могу исправить, я публикую их напрямую там. Но чтобы там ребята оценили, нужно время. Лучше посмотреть на исправления и применить их самостоятельно.
Библиотеки достаточно для большинства обычных нужд. для действительно причудливых вещей его нужно доработать ...