1

嗨,我正在尝试使用 LinqToSql 对象将一些数据保存到我的 .sdf 文件中。我有一张如下表 -

PersonId int not null pk
forename nvarchar(4000)
surname nvarchar(4000)
Birthdate DateTime
IsMale bit
Biography nvarchar(4000)

我在除 PersonId 列(设置为标识、增量)之外的所有字段中插入一个值。

我正在使用的 C# 代码

myLinqToSqlObject.Persons.InsertOnSubmit(thisPerson);

然后

 thisDataContext.SubmitChanges();

我得到“异常已被调用目标抛出”的异常。和“Varchar”的内部例外

有谁知道我做错了什么?

谢谢

编辑 - 显示填充 thisPerson 的代码

thisPerson.Forename = thisDlg.Forename;
thisPerson.Surname = thisDlg.Surname;
thisPerson.Biography = thisDlg.Biography;
thisPerson.IsMale = thisDlg.IsMale;
thisPerson.BirthDate = thisDlg.BirthDate;

所有字段都返回一个值(无空值)

4

2 回答 2

1

DataContext 有一个 Log 属性;如果您为其分配 StreamWriter 以写入文件或附加 Console.Out,它将写入上下文生成的 SQL,您可以更好地调试查询,然后可能...

此外,要弄清楚发生了什么,在提交更改之前,调用 context.GetChangeSet(),并使用即时窗口和 VS 调试来查看此集合中的内容(它执行了插入、更新和删除)。

这将帮助您更快地得到答案...

于 2010-03-10T20:44:04.913 回答
0

要使用 Visual Studio 2010 将 SDF 文件创建到 DBML,请在 Visual Studio 2010 命令提示符下写下一行,然后输入并执行它。

SqlMetal.exe "EnterFilePath\CloudKase.sdf" /dbml:"EnterFilePath\CloudKase.dbml"

此 SDF 和 DBML 文件也用于 Visual Studio 2012 易于访问和实现代码。

快乐编码:)

于 2014-03-13T05:08:23.570 回答