我是编程新手。为了熟悉F#和SQL Server,我决定尝试实现找到的here代码。我已将其粘贴在下方,以方便那些不想点击该链接的人:
let newRecord = new dbSchema.ServiceTypes.Table1(Id = 100,
TestData1 = 35,
TestData2 = 2.0,
Name = "Testing123")
let newValues =
[ for i in [1 .. 10] ->
new dbSchema.ServiceTypes.Table3(Id = 700 + i,
Name = "Testing" + i.ToString(),
Data = i) ]
// Insert the new data into the database.
db.Table1.InsertOnSubmit(newRecord)
db.Table3.InsertAllOnSubmit(newValues)
try
db.DataContext.SubmitChanges()
printfn "Successfully inserted new rows."
with
| exn -> printfn "Exception:\n%s" exn.Message
我在SQL Server中创建了两个名为Table1和Table 3的表。最初,我将每个表中的主键设置为ID。运行上面的代码立即返回此输出:
例外:无法添加具有已在使用的密钥的实体。
我开始随机尝试各种解决问题的方法(糟糕的做法,我知道!),基于我通过谷歌搜索异常找到的信息。我采取的一种方法是将每个表中的主键更改为" Name"代替。这一次,没有抛出异常。
我的问题已经解决,但我不明白是怎么回事。所以我的问题是:
提前感谢您的帮助。如果我的问题不够详细,请告诉我。
答案 0 :(得分:1)
这看起来应该有用 - Id应该是唯一的。
以下是一些调试指针:
获取SQL的原始界面,以便您自己输入查询。
在运行代码之前,请确保该表为空。