在 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# 中设置该属性?

在 SQL Server 中将 Guid 放入 NewId 列中

这对

我有用:

CREATE TABLE #temp(id int, val uniqueidentifier DEFAULT (NEWID()) )
INSERT INTO #temp(id) values(1)
SELECT * FROM #temp
DROP TABLE #temp

但请注意,这些确认 ID 是否应该是您设计中的主键。这将是非常糟糕的,并且会表现得非常糟糕。