SQL рд╕рд░реНрд╡рд░ рдФрд░ Linq 2 SQL рдмрдВрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рдЖрдпреЛрдЬрди

рдЕрдХреНрд╕рд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд░рдЦрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рднреА рдмреИрдХрдЕрдк рд╕рд┐рд╕реНрдЯрдо рдХреА рддрд░рд╣, рд╣рдорд╛рд░рд╛ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдХреНрд░реИрдк рдХреА рддрд░рд╣ рд╕рд░рд▓ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╕рдорд░реНрдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред




1. рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг

рддреЛ рдЪрд▓рд┐рдП рдкрд╣рд▓реЗ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


2. рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди

рдореИрдВ рдЖрдкрдХреЛ рдЦреЛрдЬреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдмреЛрд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рджреГрд╢реНрдп рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ, рд╣рдЯрд╛рдиреЗ рдФрд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдЯреНрд░рд┐рдЧрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдорд╛рд░реНрдХрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд▓реЛрдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЪрд▓реЛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ!

3. рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди

рдЖрдк .NET рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдПрдХ SQL рд╕рд░реНрд╡рд░ рдХреА рдорджрдж рд╕реЗ рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЯрд┐рдкреНрдкрдгреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
CREATE TABLE [dbo].[comments] (
[commentID] uniqueidentifier NOT NULL ,
[text] varchar (5000) NULL ,
[dt] datetime NULL ,
[userID] uniqueidentifier NULL ,
[topicID] uniqueidentifier NOT NULL ,
[enabled] bit NOT NULL DEFAULT ((1)) ,
[version] timestamp NOT NULL
)


* This source code was highlighted with Source Code Highlighter .

рдЦреЗрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ:
рд╕рдХреНрд╖рдо - рдЯрд┐рдкреНрдкрдгреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдзреНрд╡рдЬ (рдпрд╛рдж рд░рдЦреЗрдВ, рд╣рдо рдЪрд┐рд╣реНрди рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд▓реЛрдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)
рд╕рдВрд╕реНрдХрд░рдг - рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдлрд╝реАрд▓реНрдб рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ; рдпрджрд┐ рдРрд╕рд╛ рдХреЛрдИ рдлрд╝реАрд▓реНрдб рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп Linq2sql рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреНрд░рд╢реНрди рдмрдирд╛рддрд╛ рд╣реИ (рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреБрдирд░реНрд▓реЗрдЦрди рдпреЛрдЧреНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕рднреА рдлрд╝реАрд▓реНрдб рдбреЗрдЯрд╛рдмреЗрд╕, рдмрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред
рд╢реЗрд╖ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдЯрд┐рдкреНрдкрдгреА рдлрд╝реАрд▓реНрдбред

рдЖрдЗрдП рдкрд░рд┐рд╡рд░реНрддрди рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкрд░рд┐рд╡рд░реНрддрди рд▓реЙрдЧ рдХреЛ рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдореБрдЦреНрдп рдЕрд╡реНрдпрд╡рд╕реНрдерд╛ рдХреНрдпреЛрдВ? рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ (рдореБрдЦреНрдп mdf рдФрд░ mds рд╕реЗ рд▓реЙрдЧ рдореЗрдВ) рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдХреЛ "рдмреЗрджрдЦрд▓" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╡рд╛рд░рд╣реЗрдб рдХреЛ рдПрд╕рдПрд╕рдбреА рдбрд┐рд╕реНрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдХрд╛ рд▓рд╛рдн рджреЗрдЧрд╛ред рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ, рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕реВрдЪрдирд╛ рдЕрддрд┐рд░реЗрдХ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк "рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдлрд╝реАрд▓реНрдб - рдкреБрд░рд╛рдиреЗ рдореВрд▓реНрдп - рдирдП рдореВрд▓реНрдп" рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд┐рдерд┐ рддрдХ рд▓рд╛рдЗрди рдХреЛ рд░реЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЦреИрд░, рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рддрд╛рд░реАрдЦ рдХреЗ рдмрд╛рдж рдмрд╣реБрдд рдкрд╣рд▓реЗ рдЪреБрдиреЗрдВред рджреЛрдиреЛрдВ рдФрд░ рдПрдХ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рддреИрдпрд╛рд░ рд▓рд╛рдЗрди рд▓реЗрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдзрд╛рд░ рдмрдврд╝реЗрдЧрд╛ рдЗрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕рд╛ рдореЙрдбрд▓ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЕрднреА рднреА рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрдЧреНрд░рд╣рдг рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
CREATE TABLE [dbo].[history_comments] (
[HistoryItemID] uniqueidentifier NOT NULL ,
[HistorySavedDate] datetime NOT NULL ,
[HistorySiteUser] uniqueidentifier NULL ,
[commentID] uniqueidentifier NOT NULL ,
[text] varchar (5000) NULL ,
[dt] datetime NULL ,
[userID] uniqueidentifier NULL ,
[topicID] uniqueidentifier NOT NULL ,
[enabled] bit NOT NULL ,
[version] timestamp NOT NULL
)


* This source code was highlighted with Source Code Highlighter .


рдЦреЗрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ:
HistoryItemID - рдЕрднрд┐рд▓реЗрдЦ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛
HistorySavedDate - рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рддрд┐рдерд┐
HistorySiteUser - рд╣рдореЗрдВ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ "рдЬрдЯрд┐рд▓" рд╕рдорд╛рдзрд╛рди рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрднреА рддрдХ рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рдордд рджреЛред

рдЬрд╛рджреВ рдХрд╛ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рд╣реИ:
CREATE VIEW [applicationLevel].[comments_view] AS
SELECT
dbo.comments.commentID,
dbo.comments.text,
dbo.comments.dt,
dbo.comments.userID,
dbo.comments.topicID,
dbo.comments.version

FROM
dbo.comments
WHERE
dbo.comments.enabled = 1


* This source code was highlighted with Source Code Highlighter .


рдЕрдВрддрд┐рдо рдЭрдЯрдХрд╛ рдмрдирд╛ рд░рд╣рд╛ - рддреАрди рдЯреНрд░рд┐рдЧрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

CREATE TRIGGER [applicationLevel].[onCommentUpdate]
ON [applicationLevel].[comments_view]
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON
UPDATE [dbo].[comments]
SET
[comments].[text] = [inserted].[text],
[comments].[dt] = [inserted].[dt],
[comments].[userID] = [inserted].[userID],
[comments].[topicID] = [inserted].[topicID]
OUTPUT
NEWID(),
GETDATE(),
'00000000-0000-0000-0000-000000000000' ,
[inserted].[commentID],
[inserted].[text],
[inserted].[dt],
[inserted].[userID],
[inserted].[topicID],
[inserted].[enabled]
INTO [dbo].[history_comments]
(
[HistoryItemID],
[HistorySavedDate],
[HistorySiteUser],
[commentID],
[text],
[dt],
[userID],
[topicID],
[enabled]
)
FROM
[inserted]
WHERE
[comments].[commentID] = [inserted].[commentID]
AND [comments].[version] = [inserted].[version]
END


* This source code was highlighted with Source Code Highlighter .


Google рдбреЙрдХреНрд╕ рдкрд░ рджреЛ рдФрд░ INSERT рдФрд░ DELETE ред

4. рдЙрдк рдпреЛрдЧ

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛ред C # рдореЗрдВ рдХреЛрдб рдХреА рдПрдХ рднреА рдкрдВрдХреНрддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ (рдФрд░, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, SQL рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ), рд╣рдордиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЕрдВрддрд┐рдо рдХреЛ рдЫреЛрдбрд╝рдХрд░ред

рдЙрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╕реВрд░ рд╣реИ? рдореБрдЭреЗ рд╕рдордЭрд╛рдиреЗ рджреЗрдВ: рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЖрд╡реЗрджрди рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЖрдиреЗ рд╡рд╛рд▓реЗ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИ - рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рд╡реНрдпрдХреНрддрд┐ рдкрд░ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рдЦрд╛рддреЗ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддреЗ рд╣реИрдВ - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ SQL рдЦрд╛рддрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рддрд┐рдерд┐ рдФрд░ рд╕рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрдо рд╕реЗ рдХрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХреЛ рдмрдЪрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореБрдЭреЗ рднреА, рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - HistorySiteUserред рд╣рдореЗрдВ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдЦреЗрдж рд╣реИ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЦреИрд░, рд╣рдо рдЖрддреНрдорд╛ рд╕реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

5. рд╡рд┐рдЪрд╛рд░ рдХреА рд╢рд┐рдХрд╛рдпрдд рдХрд░рдирд╛

рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ, рд╣рдордиреЗ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдХрд┐ рд╣рдо рдЕрдХреЗрд▓реЗ рдЯреНрд░рд┐рдЧрд░реНрд╕ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдирдпрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛрдЧрд╛: рд╣рдо рдЖрд╡реЗрджрди рд╕реЗ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрджреНрдпрддрди, рдЗрдирд╕реЗрдЯ, DELETE рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ (рд╣рдо рдЗрд╕реЗ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджреЗрддреЗ рд╣реИрдВ), рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо C # рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЬрд┐рд╕реЗ рд╣рдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧреА, рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рдФрд░ рдЙрди рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдПрдЧреА рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

5. рд╣рдореЗрдВ рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реИ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪреМрдереЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдЯреНрд░рд┐рдЧрд░реНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдЖрд╡реЗрджрди рд╕реЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди, рдЗрдирд╕реЗрдЯ, DELETE рдХрд╛рд░реНрд░рд╡рд╛рдИред

рдЕрдм рд╣рдо рддреАрди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпрд╛рдБ рдмрдирд╛рддреЗ рд╣реИрдВ:
CREATE PROCEDURE [applicationLevel].[comment_update]
@commentID AS uniqueidentifier ,
@version AS timestamp ,
@text AS varchar (5000) ,
@dt AS datetime ,
@userID AS uniqueidentifier ,
@topicID AS uniqueidentifier ,
@SiteUserID AS uniqueidentifier = '00000000-0000-0000-0000-000000000000'
AS
BEGIN
UPDATE [dbo].[comments]
SET
[comments].[text] = @text,
[comments].[dt] = @dt,
[comments].[userID] = @userID,
[comments].[topicID]= @topicID
OUTPUT
NEWID(),
GETDATE(),
@SiteUserID,
@commentID,
[inserted].[text],
[inserted].[dt],
[inserted].[userID],
[inserted].[topicID],
[inserted].[enabled]
INTO [dbo].[history_comments]
(
[HistoryItemID],
[HistorySavedDate],
[HistorySiteUser],
[commentID],
[text],
[dt],
[userID],
[topicID],
[enabled]
)
WHERE
[comments].[commentID] = @commentID
AND version = @version
END


* This source code was highlighted with Source Code Highlighter .


Google Dox рдкрд░ рджреЛ рдФрд░ INSERT рдФрд░ DELETE рдлрд┐рд░ рд╕реЗред

рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ C # рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдереЛрдбрд╝рд╛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо dbml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕реЗ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рддрдХ рдЦреАрдВрдЪреЗрдВред рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ (рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ) рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рд╣рдо рд╡рд╣рд╛рдВ рдЙрдЪрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЖрдпрд╛рддрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред


рд╡рд╣реА рдбрд┐рд▓реАрдЯ рдФрд░ рдкреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред

рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрд╡рд╢реЗрд╖, siteUserId рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ? рдмрд╣реБрдд рд╕рд░рд▓: рд╣рдорд╛рд░реЗ DataContexta рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд░рд┐рд╕ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ: рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ (рдпрд╣ рдПрдХреНрд╕реЗрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реИ: рд╕рдВрд░рдХреНрд╖рд┐рдд)


public class SafetyDatabaseDataContext : DatabaseDataContext
{
#region constructors
public SafetyDatabaseDataContext () : base () { }
public SafetyDatabaseDataContext ( string connection) : base (connection) { }
public SafetyDatabaseDataContext (System.Data.IDbConnection connection) : base (connection) { }
public SafetyDatabaseDataContext ( string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : base (connection, mappingSource) { }
public SafetyDatabaseDataContext (System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : base (connection, mappingSource) { }
#endregion

protected override int comment_update( Guid ? commentID, System.Data.Linq.Binary version, string text, DateTime ? dt, Guid ? userID, Guid ? topicID, Guid ? siteUserID)
{
return base .comment_update(commentID, version, text, dt, userID, topicID, siteUserID ?? HSession.UserIdOrEmpty);
}

protected override int comment_delete( Guid ? commentID, System.Data.Linq.Binary version, Guid ? siteUserID)
{
return base .comment_delete(commentID, version, siteUserID ?? HSession.UserIdOrEmpty);
}

protected override int comment_insert( Guid ? commentID, string text, DateTime ? dt, Guid ? userID, Guid ? topicID, Guid ? siteUserID)
{
return base .comment_insert(commentID, text, dt, userID, topicID, siteUserID ?? HSession.UserIdOrEmpty);
}
}


* This source code was highlighted with Source Code Highlighter .


рд╣рдо рд╕рднреА рдорд╛рдирдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реЗ рд╣реИрдВ) рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ, рдмрджрд▓рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рдЦрд╛рд▓реА рдорд╛рдкрджрдВрдбреЛрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╛рдЗрдЯрд╕рд╛рдЗрдб) рдХреЛ рдкреВрд░рдХ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЫреЛрдбрд╝ рджрд┐рдпрд╛ (рдХреЗрд╡рд▓ рддрднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬрдм рд╕рд╛рдЗрдЯ рдпреВрд╕рд░рдЖрдИрдбреА == рдирд▓) рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рддрд░реНрдХ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

рдмрд╕ рдЗрддрдирд╛ рд╣реА, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реЗрдлреНрдЯреАрдбреИрдЯреЗрдмреЗрд╕рдбреИрдЯрд╛рдХрд╛рдХреЛрдЯреЗрдХреНрд╕реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЬрдЧрд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдЬреЛ linq2sql рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдмрдирд╛рддрд╛ рд╣реИ)ред рдореЗрд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HDataBase.GetDataContext () рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рдареАрдХ рдХрд┐рдпрд╛ рд╣реИ
public static DatabaseDataContext GetDataContext()
{
return new DatabaseDataContext();
}


* This source code was highlighted with Source Code Highlighter .
рдкрд░
public static DatabaseDataContext GetDataContext()
{
return new SafetyDatabaseDataContext();
}


* This source code was highlighted with Source Code Highlighter .


6. рдирд┐рд╖реНрдХрд░реНрд╖

рд╕рдорд╛рдзрд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕рднреА рдСрдкрд░реЗрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдЬреЛ рдХрд┐ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╣рдорд▓рд╛рд╡рд░, рдЬрд┐рд╕рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИ, рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЬреБрдбрд╝рд╛ рдбреЗрдЯрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ siteUserID), рдпрд╣ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХреБрдЫ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

Source: https://habr.com/ru/post/In121846/


All Articles