У меня есть большой стол в моей базе данных SQL Server следующим образом:Update только отредактированные поля в C# приложения
CREATE TABLE [dbo].[Servers](
[ServerId] [uniqueidentifier] NOT NULL,
[ServerName] [nvarchar](50) NULL,
[HostName] [nvarchar](50) NULL,
[OperatingSystem] [nvarchar](50) NULL,
[OSVersion] [nvarchar](50) NULL,
[OSComment] [nvarchar](200) NULL,
[ServerManufacturer] [nvarchar](50) NULL,
[ServerModel] [nvarchar](50) NULL,
[IP] [binary](4) NULL,
[Mask] [binary](4) NULL,
[Gateway] [binary](4) NULL,
[PrimaryDNS] [binary](4) NULL,
[SecondaryDNS] [binary](4) NULL,
[NetworkType] [nvarchar](20) NULL,
[NetworkComment] [nvarchar](200) NULL,
[SiteId] [uniqueidentifier] NULL,
[DataCenterRow] [smallint] NULL,
[DataCenterRack] [smallint] NULL,
[AntiVirusProduct] [nvarchar](50) NULL,
[AntiVirusVersion] [nvarchar](50) NULL,
[AntiVirusComment] [nvarchar](200) NULL,
[PassedOSSecurity] [nvarchar](50) NULL,
[Approved] [bit] NULL,
[ApprovedBy] [nvarchar](50) NULL,
CONSTRAINT [PK_Servers] PRIMARY KEY CLUSTERED
(
[ServerId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
В моей C# Windows Forms приложений У меня есть форма, которая отображает содержимое этой таблицы и выполняет операцию Display/Create/Delete/Update.
Теперь, когда я редактирую определенные поля в записи, мне нужно выполнить запрос, который будет обновлять только те поля, которые были обновлены. Другими словами, мне нужен запрос, который будет динамически идентифицировать отредактированные поля и обновить их.
Хранимая процедура, которая обновляет столбцы один на один выглядит следующим образом:
CREATE PROCEDURE dbo.UpdateServer @ServerName nvarchar(50), @HostName nvarchar(50),@OperatingSystem nvarchar(50),
@OSVersion nvarchar(50), @OSComment nvarchar(50),@ServerManufacturer nvarchar(50),
@ServerModel nvarchar(50), @IP nvarchar(15),@Mask nvarchar(15), @Gateway nvarchar(15),
@PrimaryDNS nvarchar(15), @SecondaryDNS nvarchar(15), @NetworkType nvarchar(20),@NetworkComment nvarchar(200),
@SiteId uniqueidentifier, @DataCenterRow smallint, @DataCenterRack smallint, @AntiVirusProduct nvarchar(50),
@AntiVirusVersion nvarchar(50), @AntiVirusComment nvarchar(200), @PassedOSSecurity bit, @Approved bit,
@ApprovedBy nvarchar(50)
AS
UPDATE [SystemsInfo].[dbo].[Servers]
SET [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],IP=(select dbo.fnBinaryIPv4(@IP)),
Mask=(select dbo.fnBinaryIPv4(@Mask)),Gateway=(select dbo.fnBinaryIPv4(@Gateway)),PrimaryDNS=(select dbo.fnBinaryIPv4(@PrimaryDNS)),SecondaryDNS=(select dbo.fnBinaryIPv4(@SecondaryDNS)),
[email protected],[email protected],[email protected],
[email protected], [email protected], [email protected], [email protected], [email protected], [email protected],
[email protected],[email protected];
Вы используете linq для sql или sqlclient? –
sqlclient, я вызываю хранимую процедуру для выполнения запроса. –
У вас есть GridView, держащий все эти записи? И вы хотите, чтобы ваше приложение автоматически создавало запрос, который обновляет все обновленные поля в вашем приложении? – Everyone