2017-07-17 8 views
0

私はデータベースにいくつかのデータをシードしようとしています。私が取得するエラーは、ブール値と日付フィールドにあります。以下に、データベースをシードするシードデータのサンプルを示します。私は何をしているのですか?EF-CodeFirstシードデータを使用してdatetime値をデータベースに挿入します。

Sql("INSERT INTO USERS (Id,FirstName,LastName,Email,RefIndicator,TeamId,IsRegistered,DateRegistered,LastModified,UserRolesId) VALUES (1, 'SomeFirstName', 'SomeSurName', '[email protected]', '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', '[email protected]', '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', '[email protected]', 'IMT/iTC22', 1, True, convert(datetime, '17/07/2017 17:56:25'), null, 3)"); 

以下は、私はあなたがタイプbitであるIsRegistered列に値Trueを挿入しようとしているシードデータ

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);  
+1

'True'はデータベース型ではありません。 'bit'カラムがあり、' true'には '1'、' false'には '0'を送ります。 – krillgar

+0

@krillgarここで私がどこから来ているのか理解できるように、テーブル構造を追加しましょう – Guzzyman

+0

@krillgarテーブル構造を反映するために質問を更新しました – Guzzyman

答えて

0

Iが正常に私が「TRUE」ブール値を真の文字列値を変更しても、データベースに現在の日時値を挿入するGETDATE()関数を使用

 Sql("INSERT INTO USERS (Id,FirstName,LastName,Email,RefIndicator,TeamId,IsRegistered,DateRegistered,LastModified,UserRolesId) VALUES (1, 'SampleName', 'SampleSurname', '[email protected]', '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', '[email protected]', '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', '[email protected]', 'IMT/iTC22', 1, 'True', GETDATE(), null, 3)"); 

以下のコードを使用してデータベースを播種。私はこれから日付解決策を選んだpost

1

を移入する必要がテーブル構造です。 C#ブール値trueが送信されないようにスクリプト文字列を実行していますが、Trueの文字列を一重引用符で囲まずに送信していますが送信されています。そのため、両方の値がエラーを投げているのです。

Trueを文字列に1と置き換えても問題ありません。

関連する問題