代码之家  ›  专栏  ›  技术社区  ›  Guzzyman

使用EF CodeFirst种子数据将日期时间值插入数据库

  •  0
  • Guzzyman  · 技术社区  · 8 年前

     Sql("INSERT INTO USERS (Id,FirstName,LastName,Email,RefIndicator,TeamId,IsRegistered,DateRegistered,LastModified,UserRolesId) VALUES (1, 'SomeFirstName', 'SomeSurName', 'name@somedomainname.com', 'IMT/iTC22', 1, True, convert(datetime, '17/07/2017 17:56:25'), null, 1)");
     Sql("INSERT INTO USERS (Id,FirstName,LastName,Email,RefIndicator,TeamId,IsRegistered,DateRegistered,LastModified,UserRolesId) VALUES (2, 'SomeFirstName', 'SomeSurName', 'name@somedomainname.com', 'IMT/iTC22', 1, True, convert(datetime, '17/07/2017 17:56:25'), null, 2)");
     Sql("INSERT INTO USERS (Id,FirstName,LastName,Email,RefIndicator,TeamId,IsRegistered,DateRegistered,LastModified,UserRolesId) VALUES (3, 'SomeFirstName', 'SomeSurName', 'name@somedomainname.com', 'IMT/iTC22', 1, True, convert(datetime, '17/07/2017 17:56:25'), null, 3)");
    

    下面是我需要填充种子数据的表结构

    CREATE TABLE [dbo].[Users] (
                            [Id]             TINYINT        NOT NULL,
                            [FirstName]      NVARCHAR (MAX) NULL,
                            [LastName]       NVARCHAR (MAX) NULL,
                            [Email]          NVARCHAR (MAX) NULL,
                            [RefIndicator]   NVARCHAR (MAX) NULL,
                            [TeamId]         TINYINT        NOT NULL,
                            [IsRegistered]   BIT            NOT NULL,
                            [DateRegistered] DATETIME       NOT NULL,
                            [LastModified]   DATETIME       NULL,
                            [UserRolesId]    TINYINT        DEFAULT ((0)) NOT NULL,
                            CONSTRAINT [PK_dbo.Users] PRIMARY KEY CLUSTERED ([Id] ASC),
                            CONSTRAINT [FK_dbo.Users_dbo.Teams_TeamId] FOREIGN KEY ([TeamId]) REFERENCES [dbo].[Teams] ([Id]) ON DELETE CASCADE,
                            CONSTRAINT [FK_dbo.Users_dbo.UserRoles_UserRolesId] FOREIGN KEY ([UserRolesId]) REFERENCES [dbo].[UserRoles] ([Id]) ON DELETE CASCADE
                        );
    
    
                        GO
                        CREATE NONCLUSTERED INDEX [IX_TeamId]
                            ON [dbo].[Users]([TeamId] ASC);
    
    
                        GO
                        CREATE NONCLUSTERED INDEX [IX_UserRolesId]
                            ON [dbo].[Users]([UserRolesId] ASC);      
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   krillgar    8 年前

    您正在尝试插入值 True 进入 IsRegistered bit 。您正在执行一个脚本字符串,因此 true 真的 不是用单引号括起来的

    更换您的 真的 具有 1 在你的控制下,你会没事的。

        2
  •  0
  •   Guzzyman    8 年前

            Sql("INSERT INTO USERS (Id,FirstName,LastName,Email,RefIndicator,TeamId,IsRegistered,DateRegistered,LastModified,UserRolesId) VALUES (1, 'SampleName', 'SampleSurname', 'someNames@nnxg.com', 'IMT/iTC22', 1, 'True', GETDATE(), null, 1)");
            Sql("INSERT INTO USERS (Id,FirstName,LastName,Email,RefIndicator,TeamId,IsRegistered,DateRegistered,LastModified,UserRolesId) VALUES (2, 'SampleName', 'SampleSurname', 'someNames@nnxg.com', 'IMT/iTC22', 1, 'True', GETDATE(), null, 2)");
            Sql("INSERT INTO USERS (Id,FirstName,LastName,Email,RefIndicator,TeamId,IsRegistered,DateRegistered,LastModified,UserRolesId) VALUES (3, 'SampleName', 'SampleSurname', 'someNames@nnxg.com', 'IMT/iTC22', 1, 'True', GETDATE(), null, 3)");
    

    我将字符串值True更改为布尔值True,并使用GETDATE()函数将当前日期时间值插入数据库。我从中选择了日期解决方案 post