Использовать fLinq для сохранения? - PullRequest
1 голос
/ 07 сентября 2010

Я не вижу много примеров того, как продолжать работу с linq / flinq. В конечном итоге я могу написать процедуру для того, что мне нужно, однако соотношение 1 -> * между tableA и tableC делает это непросто.Можете ли вы продолжать с Flinq?Есть ли где-нибудь опубликованный пример, которому я мог бы следовать?Ниже приведено то, что я пробовал (или, вернее, самый логичный вариант того, что я пробовал).

Заранее спасибо.

Таблица A (1) -> (1) Таблица B
Таблица A (1) -> (*) Таблица C

// add the report
let b = TableB()
b.Name <- getName()

// add the authors            
let authorSet = Data.Linq.EntitySet<TableC>()
getAuthorIds document.Authors |> Seq.iter 
(fun id -> 
     let c  = TableC()
     c.Id <- id
     authorSet.Add c)

     // add the tagged report w/ associated reoprt
     let a = TableA()
     a.field1 <- "Something"
     a.tableB = b
     a.TableC <- authorSet

     let docSet = Data.Linq.EntitySet<TableA>()
     docSet.Add doc

     db.TableA.InsertAllOnSubmit([doc])
     let cf = db.ChangeConflicts
     let cm = db.GetChangeSet

1 Ответ

0 голосов
/ 08 сентября 2010

Я не уверен, что именно вы пытаетесь достичь, а что не получается, но по крайней мере одна часть, которой не хватает в вашем коде, это вызов:

db.SubmitChanges()

В общем, типы TableA,TableB и т. Д. Представляют одну строку в базе данных, а тип Table<TableA>, Table<TableB> и т. Д. Представляют всю базу данных.Поэтому, если вы хотите добавить строку в базу данных TableA, вы делаете что-то вроде

let rowA = TableA(Name = "Foo", Salary = 42)
db.TableA.InsertOnSubmit(rowA)
db.SubmitChanges()

Вы, конечно, можете внести дополнительные изменения в объектную модель, прежде чем делать SubmitChanges (то есть вы можете и должны добавитьвсе соответствующие объекты с внешним ключом, имеющие отношение 1: 1).

Здесь не так много специфических для F # - MSDN является отличным источником информации по этому вопросу, см., например, http://msdn.microsoft.com/en-us/library/bb386941.aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...