HI,我正在尝试使用LinqToSql对象将一些数据保存到我的.sdf文件中。 我有一张表如下 -
PersonId int not null pk
forename nvarchar(4000)
surname nvarchar(4000)
Birthdate DateTime
IsMale bit
Biography nvarchar(4000)
我在除PersonId列之外的所有字段中插入一个值(设置为identity,increment)。
我正在使用
的C#代码myLinqToSqlObject.Persons.InsertOnSubmit(thisPerson);
然后
thisDataContext.SubmitChanges();
我得到了一个例外:“调用目标已抛出异常。” 和“Varchar”的内部例外
有谁知道我做错了什么?
由于
编辑 - 显示填充此人的代码
thisPerson.Forename = thisDlg.Forename;
thisPerson.Surname = thisDlg.Surname;
thisPerson.Biography = thisDlg.Biography;
thisPerson.IsMale = thisDlg.IsMale;
thisPerson.BirthDate = thisDlg.BirthDate;
所有字段都返回一个值(无空值)
答案 0 :(得分:1)
DataContext有一个Log属性;如果您为其分配StreamWriter以写入文件或附加Console.Out,它将编写上下文生成的SQL,您可以更好地调试查询然后...
另外,要确定发生了什么,在提交更改之前,请调用context.GetChangeSet(),并使用立即窗口和VS调试来查看此集合中的内容(它具有插入,更新和删除)执行)。
这将有助于您更快地得到答案......
答案 1 :(得分:0)
使用Visual Studio 2010创建SDF文件到DBML,在Visual Studio 2010命令提示符下面写下面的行,而不是输入并执行它。
SqlMetal.exe "EnterFilePath\CloudKase.sdf" /dbml:"EnterFilePath\CloudKase.dbml"
此Visual Studio 2012中使用的SDF和DBML文件也易于访问和实现代码。
快乐编码:)