LINQ to SQL + WCF best practise?

įvertino 0 Neatsakyta Ši žinutė turi 0 patvirtinti atsakymai | 4 Atsakymai | 2 Šalininkai

Top 10 autorių
Vyras
113 Žinutės
Taškai 2,285
Sergejus parašyta 2009-5-21 23:22

Sveiki, kaip žinia LINQ to SQL panaudojimas taip vadinamoje "disconnected" aplinkoje nėra labai patogus. Iki šiol teko matyti / daryti keliais būdais, todėl būtų įdomu sužinoti kaip šią problemą sprendžiate jus.

Visi atsakymai

Top 10 autorių
32 Žinutės
Taškai 570

Mes kaip ir nieko labai sudėtingo nedarom:

- turim bazinę entity klasę, kuri iš esmės papildyta properčiu IsNew(naudojamas nustatymui, ar reikia atachinti ar insertinti) ir metodu Detach

- turim faktorių, kad valdyti datacontexto instance'ų kūrimą

- turim šiek tiek helperių batch updeitams/sortinimui/triminimui

- šiek tiek konfliktų resolvinimo logikos datacontext'e

O visa kita daroma rankutėmis.

Bet jeigu kažkas darė kažką daugiau, būtų įdomu pamatyti.

  • | Žinučių taškai: 20
Top 10 autorių
Vyras
113 Žinutės
Taškai 2,285

O kaip darai su vaikiniais įrašais, kada jie detachint'i yra trinami / pridedami?

BTW., kaip atrodo Detach metodas?

  • | Žinučių taškai: 20
Top 10 autorių
32 Žinutės
Taškai 570

Detach atrodo taip (nors dabar pažiūrėjau kodą, niekam to metodo taip ir neprireikė):

public void Detach()
{
GetType().GetMethod("Initialize", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(this, null);
}

Kas dėl trynimo, tai mes ėjom gal ne pačiu patogiausiu vartotojui keliu, bet paprasčiausiu programuotojui - visur trinam iškart po confirmation'o patvirtinimo, t.y. nelaukdami kol tėvinis objektas bus saugomas.

Nežinau link kur eina EF4.0 spręsdamas šitas problemas, bet jeigu reikėtų, aš gal galvočiau taip: daryčiau požymį IsDeleted EntityBase klasėje, tada pagal tą požymį galiama konstruoti trynimo logiką.

  • | Žinučių taškai: 20
Top 10 autorių
Vyras
113 Žinutės
Taškai 2,285

Kas liečia vaikinių įrašų trinimo, tai egzistuoja projektas: http://linq2sqleb.codeplex.com/, kuris aprašo LINQ to SQL Entity Base objektą su būsena. Tai vat jo pagalba dar šiek tiek uždavinys palengvėja.

Kas liečia EF4, tai ten jau atsirado self-tracking objects būtent tokiems scenarijams, tai bus daug geriau. Taip pat MS žadėjo vėliau pridėti self-tracking POCO, vat čia bus visai jėga.

  • | Žinučių taškai: 5
Puslapis 1 iš 1 (5) | RSS
DotNetGroup.LT, 2009
Sprendimas