将SQL中的“截止日期”类型列从C#-Linq保存到SQL

将SQL中的“截止日期”类型列从C#-Linq保存到SQL,c#,sql-server,linq,linq-to-sql,C#,Sql Server,Linq,Linq To Sql,我在将SQL中的日期类型列从Linq保存到C中的SQL时遇到问题# 问题是,我在SQL中有一个日期类型列,但当我把它拉到dbml中时,属性将交换到DateTime 每当我尝试通过Linq到SQL更新此字段时,都会发生以下错误: 字符串或二进制数据将被截断。声明已终止 现在我知道这是由于LINQtoSQL试图保存的类型是DateTime,而列本身是Date,但到目前为止,我还没有找到任何解决方案 当我将表拉入dbml时,如何让Linq to SQL将列类型视为Date而不是DateTime,或者如

我在将SQL中的日期类型列从Linq保存到C中的SQL时遇到问题#

问题是,我在SQL中有一个日期类型列,但当我把它拉到dbml中时,属性将交换到DateTime

每当我尝试通过Linq到SQL更新此字段时,都会发生以下错误:

字符串或二进制数据将被截断。声明已终止

现在我知道这是由于LINQtoSQL试图保存的类型是DateTime,而列本身是Date,但到目前为止,我还没有找到任何解决方案

当我将表拉入dbml时,如何让Linq to SQL将列类型视为Date而不是DateTime,或者如何将其另存为DateTime到日期类型列

谢谢

编辑:在不提交整个过程的情况下,表就在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]”)
公共部分类顺序:INotifyPropertyChanged,INotifyPropertyChanged
{
[...]
私人内部Id;
private System.Nullable_DateField;
[...]
DateTime属性不能更改为Date(据我所知),因此,每当我尝试保存到它时,它需要一个DateTime,但会导致一个问题,因为它需要截断该属性以保存为SQL中的预期日期类型-引发错误。

尝试以下操作:

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

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

_db.SubmitChanges();

您可以编辑您的问题并显示给出错误的代码吗?您可能只需要将日期值作为字符串传递,如:
dateVal.ToString(“yyy-MM-dd”);
您真的使用linq to sql而不是EF吗?如果是这样,您可能想切换。@dvo已更新以显示更新字段的代码。不幸的是,在不更改多个元素的情况下,项目的其余部分就是这样工作的。我不能,但我确实认为实体框架是一个优点-两者都有优点。此外,我还尝试了t的格式设置DateTime转换为字符串-但我不能像dbml中显示的那样将类型“string”隐式更改为“DateTime”-我可以将dbml更改为“string”类型,并查看其是否有效,而无需更改SQL表本身。不幸的是,我遇到了错误,无法将类型“string”隐式转换为“System.DateTime”
 var rowToUpdate = _db.Orders.First(o => o.Id == Id);

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

_db.SubmitChanges();