在 SQL Server 中将 Guid 放入 NewId 列中
本文关键字:放入 NewId 列中 Guid 中将 SQL Server | 更新日期: 2023-09-27 17:56:40
我目前正在尝试在SQL Server中的行插入中添加唯一的Guid属性。我是通过实体框架 6 执行此操作的。为了将列添加到表中,我使用了以下查询:
ALTER TABLE dbo.Reservation ADD ConfirmationID UNIQUEIDENTIFIER DEFAULT (NEWID()) WITH VALUES
每当我在此表中创建新行时,NEWID()
始终设置为 00000000-0000-0000-0000-000000000000
.在插入之前,我尝试在 C# 中为该属性创建一个新的 Guid,但这返回相同的结果。
以下是我作为插入函数的一部分调用的 C# 代码:
public ReservationClientModel Create(ReservationClientModel clientModel)
{
var reservation = new Reservation();
reservation = Mapper.Map<ReservationClientModel, Reservation>(clientModel, reservation);
reservation.ConfirmationID = new Guid();
_repository.Add(reservation);
_context.Commit();
return Mapper.Map<ReservationClientModel>(reservation);
}
下面是从 EF 探查器生成的代码:
INSERT [dbo].[Reservation]
([RoomID],
.....
.....
[ConfirmationID])
VALUES (15 /* @0 - [ID] */,
....
....
'00000000-0000-0000-0000-000000000000' /* @13 - [ConfirmationID] */)
有什么方法可以设置此属性以在插入时添加NEWID()
,而无需事先在 C# 中设置该属性?
这对
我有用:
CREATE TABLE #temp(id int, val uniqueidentifier DEFAULT (NEWID()) )
INSERT INTO #temp(id) values(1)
SELECT * FROM #temp
DROP TABLE #temp
但请注意,这些确认 ID 是否应该是您设计中的主键。这将是非常糟糕的,并且会表现得非常糟糕。