Сохранение в столбец типа ДАТА в SQL от C# - Linq до SQL - PullRequest
0 голосов
/ 24 февраля 2020

У меня проблема с сохранением в столбце типа Date в SQL из Linq до SQL в C#

Проблема в том, что у меня есть столбец типа Date в SQL но когда я перетаскиваю это в dbml - свойство переходит на DateTime.

Всякий раз, когда я пытаюсь обновить это поле через Linq до SQL, возникает следующая ошибка:

String или двоичные данные будут усечены. Оператор был прекращен.

Теперь я знаю, что это связано с типом, который Linq для SQL пытается сохранить как DateTime, а сам столбец - как Date - но до сих пор я не нашел какое-то решение для этого.

Что можно сделать, чтобы Linq to SQL видел тип столбца как Date, а не DateTime, когда я извлекаю таблицу в dbml - или как я могу сохранить как DateTime в столбце типа Date.

Спасибо

РЕДАКТИРОВАТЬ: без отправки всего процесса просто таблица находится в dbml, и я выбираю строку с помощью Id

Затем я обновляю один полей (DateField), который имеет тип даты в SQL (который был перенесен в dbml как DateTime, поскольку нет типа даты) и отправляет изменение.

var rowToUpdate = _db.Orders.First(o => o.Id == Id);

rowToUpdate.DateField = Convert.ToDateTime(txtNewDate.Text).Date;

_db.SubmitChanges();

Дополнительно к этому ниже показан dbml (отредактированный для отображения имени поля)

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.[Order]")]
public partial class Order : INotifyPropertyChanging, INotifyPropertyChanged
{

    [...]

    private int _Id;

    private System.Nullable<System.DateTime> _DateField;

    [...]

Свойство DateTime не может быть изменено на Date (насколько я знаю), и поэтому, когда я пытаюсь сохранить его, оно ожидая DateTime, но вызывает проблему, так как необходимо урезать ее, чтобы сохранить как ожидаемый тип даты в SQL - выдает ошибку.

1 Ответ

0 голосов
/ 24 февраля 2020

Попробуйте это:

 var rowToUpdate = _db.Orders.First(o => o.Id == Id);

rowToUpdate.DateField = Convert.ToDateTime(txtNewDate.Text).Date.ToString("yyyy-MM-dd");

_db.SubmitChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...