f#保存数据与EF在高阶函数
本文关键字:高阶 函数 EF 保存 数据 | 更新日期: 2023-09-27 18:10:18
我在f#高阶函数中创建并插入项目到数据库中。我不断抛出一个异常,说我试图保存0项到我的数据库,但我显然是添加项目到上下文中,然后保存。检查db. wordrelationships . local属性会显示728个项(没有一个是远程存在的)。
let CreateWordRelationDB () =
let db = new AnnotatorModel()
printfn "%s" "Entered Function and created db v8"
let tweets = db.Tweets.ToList() |> Seq.map(fun t -> t.Text)
let words = db.Words.ToList() |> Seq.map(fun w -> w)
words
|> Seq.fold(fun acc w1 ->
let filtacc = acc
|> Seq.filter(fun (w2:Word) ->
if(w1.Text = w2.Text) then false else true)
let adds = filtacc
|> Seq.map(fun w2 -> CreateWordRelation w1 w2 tweets)
db.WordRelations.AddRange(adds) |> ignore
try
db.SaveChanges() |> ignore
with error ->
printfn "%s" error.Message
filtacc
) words
|> ignore
db.SaveChanges()总是失败。您可以在它的上方看到db. wordrelationships . addrange(添加)。每次迭代这个数量都会减少,但是从728开始,然后是727,然后是726,等等,直到0。
任何想法吗?
在我的特定实例中,似乎出于某种原因,SQL Azure或Entity Framework v6.1不喜欢我的主键是计算列,这是通过取单词1和单词2的ID并将它们连接在一起来计算的。
将ID更改为"PairId"并将ID更改为Int IDENTITY列似乎已经修复了所有问题…
如果有人想评论一下潜在的原因,我很想知道这些答案。