2016-03-24 3 views
0

Im using tableAdapters для вставки значений в таблицу.my tableadapter генерируют поля datetime2 как строку

Heres моего стола aaTest

CREATE TABLE [dbo].[aaTest](
[id] [int] IDENTITY(1,1) NOT NULL, 
[INVOICEDATE] [datetime2](0) NULL, 
[CHARGEDATE] [datetime2](0) NULL, 
[EZPASS] [varchar](50) NULL, 
[PLAZA] [varchar](10) NULL, 
[PLAZA2] [varchar](10) NULL, 
[PDATE] [datetime2](0) NULL, 
[PTIME] [varchar](9) NULL, 
[PAMOUNT] [decimal](18, 2) NULL, 
[PBALANCE] [decimal](18, 2) NULL, 
[ACTION] [varchar](10) NULL 
) ON [PRIMARY] 

в моем наборе, моя первая команда заливки select * from aatest и ив создала вставки запрос

INSERT INTO [aatest] ([INVOICEDATE], [CHARGEDATE], [EZPASS], [PLAZA], [PLAZA2], [PDATE], [PTIME], [PAMOUNT], [PBALANCE], [ACTION]) 
VALUES (@INVOICEDATE, @CHARGEDATE, @EZPASS, @PLAZA, @PLAZA2, @PDATE, @PTIME, @PAMOUNT, @PBALANCE, @ACTION) 

теперь под моим набором данных дизайнера, мой запрос был объявлен как таковые

public virtual int InsertQuery(string INVOICEDATE, string CHARGEDATE, string EZPASS, string PLAZA, string PLAZA2, string PDATE, string PTIME, global::System.Nullable<decimal> PAMOUNT, global::System.Nullable<decimal> PBALANCE, string ACTION) 

проблема i m имеет, INVOICEDATE, CHARGEDATE и PDATE генерируются как строки, когда они фактически являются datetime2. это вызывает исключение

Наилучшее перегруженное соответствие метода для (mydataset) имеет некоторые недопустимые аргументы.

изменение его в datetime работало временным образом, но через некоторое время оно восстанавливалось обратно в строки.

+0

попробуйте регулярное datetime вместо datetime2. Я думаю, что tableadapters - это более старые технологии, которые могут не распознавать новый тип данных сервера sql. – Jeremy

ответ

0

Вам необходимо изменить [datetime2] на номер [datetime], который должен исправить вашу проблему.

+0

да, я немного порекомендовал, и как упоминалось в jeremy, tableadapters старые и не пересоздают 'datetime2' или' date' – lizzy81

Смежные вопросы