我正在尝试将记录插入到名为Test
的表中,我正在使用LINQ技术:
问题是我的表中有一个time
列,其类型为Time(7)
,但当我尝试向表中插入数据时,我收到此错误:
Operand type clash: bigint is incompatible with time
这是我在SQL中的test
表设计:
我在C#中的表实现:
[Table(Name = "Test")]
class TableTest
{
private int _id;
[Column(IsPrimaryKey = true, Name = "id", Storage = "_id")]
public int id
{
get { return _id; }
set { _id = value; }
}
private TimeSpan _time;
[Column(Name = "time", Storage = "_time")]
public TimeSpan time
{
get { return _time; }
set { _time = value; }
}
}
在这里我尝试插入我的记录:
DataContext dc = new DataContext(@"Data Source=.;Initial Catalog=DBTest;Integrated Security=True");
private void button1_Click(object sender, EventArgs e)
{
TableTest t = new TableTest();
t.id = 1;
t.time = new TimeSpan(7, 30, 0);
Table<TableTest> t_insert = dc.GetTable<TableTest>();
t_insert.InsertOnSubmit(t);
dc.SubmitChanges(); // error Here !!!!!
}
我搜索了每一个地方,我发现只有映射Time()
sql类型我应该使用TimeSpan
,请告诉我我做错了什么!感谢
答案 0 :(得分:5)
您的ColumnAttribute
需要包含DbType
参数。将其设置为
[Column(Storage="_time", DbType="Time NOT NULL")]
您可以在MSDN找到更多信息。