曾经有一个Node
实体有一个字段Alias
。但是,情况发生了变化,现在我们修改了该数据模型,以便Node
可以有多个Aliases
,因此,Node
现在支持Aliases
数组(它反过来创建一个Aliases
表,以及一个映射多对多关系的AliasesNodes
表。
我的问题是,如何更新我的存储过程以使其支持此操作,以及如何修改调用此存储过程的c#代码?
该程序的要求是,如果Node
不存在Alias
,则每Node
只插入Aliases
,仅在不存在的情况下插入,最后创建Alias
与其Alias
之间的关系。
CREATE TYPE [dbo].[NodeTableType] AS TABLE
(
[Id] [int] NOT NULL,
[NodeTypeId] [smallint] NOT NULL,
[Location] [nvarchar](50) NULL,
[DisplayName] [nvarchar](100) NULL,
[AccessLevel] [smallint] NOT NULL,
[IsEnabled] [bit] NOT NULL,
[CreatedOn] [datetime2](7) NULL,
[CreatedBy] [nvarchar](150) NULL,
[ModifiedOn] [datetime2](7) NULL,
[ModifiedBy] [nvarchar](150) NULL,
[NativeId] [bigint] NOT NULL,
[SourceId] [int] NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Alias] [nvarchar](100) NULL
);
CREATE PROCEDURE [dbo].[InsertNonExistingNode]
(@TableVariable dbo.NodeTableType READONLY)
AS
BEGIN
INSERT INTO NWatchNodes WITH (ROWLOCK) (Id, NodeTypeId, Location, DisplayName,
AccessLevel, IsEnabled, CreatedOn, CreatedBy,
ModifiedOn, ModifiedBy, NativeId, SourceId, Name, Alias)
SELECT
t.Id, t.NodeTypeId, t.Location, t.DisplayName,
t.AccessLevel, t.IsEnabled, t.CreatedOn, t.CreatedBy,
t.ModifiedOn, t.ModifiedBy, t.NativeId, t.SourceId, t.Name, t.Alias
FROM
@TableVariable t
LEFT JOIN
NWatchNodes PR WITH (NOLOCK) ON PR.Id = t.Id
WHERE
PR.ID IS NULL
END;
为字段时(存在for tl in ax2.get_xticklabels():
tl.set_rotation(30)
表之前)OLD 工作存储过程:
>dta
ids names
1 1001 P1
2 1001 P2
3 1002 P1
4 1003 P2
5 1003 P3
6 1003 P4
7 1004 P1