Welcome to Sign in | Help
in Search

RE: create database in Linq

Last post 01-31-2008, 12:09 PM by ignatandrei. 11 replies.
Sort Posts: Previous Next
  •  01-30-2008, 10:49 AM 3867

    RE: create database in Linq

    Intrebare adresată de andrei pe forumul ronua:

    As vrea sa fac un export din XML in BD SQL Server. Cea mai usoara cale mi s-a parut cu LINQ.

    Dar

        1. Ar trebui sa fac o clasa dinamica - in functie de proprietatile din XML ...Cred ca punctul de pornire este DynamicQuery - sau poate sa le incarc intr-un Dataset ??

        2.  Ar trebui sa atasez o tabela la un DataContext generic, sa setez connection string la un mdf nou, sa atasez tabela/clasa si sa apelez CreateDatabase. Aici incepe din nou zona crepusculara- cum fac clasa, cum o atasez, etc ?

     

    Orice idei/linkuri sunt binevenite

    RE: poti utiliza OPENXML din SQL Server (sursa Books Online):

    INSERT INTO tabela
    SELECT ...
    FROM OPENXML(...)



  •  01-30-2008, 11:27 AM 3869 in reply to 3867

    Re: RE: create database in Linq

    din pacate, mai am o problema : BD nu exista... si nici tabela...

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  01-30-2008, 11:28 AM 3870 in reply to 3867

    Re: RE: create database in Linq

  •  01-30-2008, 11:42 AM 3871 in reply to 3869

    Re: RE: create database in Linq

    ignatandrei:
    din pacate, mai am o problema : BD nu exista... si nici tabela...

    Apelezi metoda ExecuteNonQuery avand ca parametru sirul "CREATE DATABASE new; GO; USE new; GO;  CREATE TABLE(c1 INT, c2 INT); GO;"

    Daca nu SQL Server Management Studio !
  •  01-30-2008, 1:01 PM 3873 in reply to 3869

    Re: RE: create database in Linq

    Baza de date, evident, se poate crea cu CREATE DATABASE. Referitor la crearea tabelei, dacă problema este că nu se cunoaşte structura acesteia, atunci poţi să faci SELECT INTO în loc de INSERT, adică:

    SELECT * INTO tabela FROM OPENXML(...)

    Răzvan
  •  01-30-2008, 2:26 PM 3880 in reply to 3873

    Re: RE: create database in Linq

    rsocol:
    Baza de date, evident, se poate crea cu CREATE DATABASE. Referitor la crearea tabelei, dacă problema este că nu se cunoaşte structura acesteia, atunci poţi să faci SELECT INTO în loc de INSERT, adică:

    SELECT * INTO tabela FROM OPENXML(...)

    Răzvan

    All :
    Problema este teoretica ( deocamdata) si nu practica.
    Ma intereseaza creearea cu LINQ - si nu cu statement-uri SQL -  dintr-un motiv practic:
    Acum exista LINQ provider pentru SQL Server( vorbesc ca BD, nu prea ma intereseasa  Active Directory, Flickr, etc) .
     La un moment dat,cineva o sa creeze un LINQ provider pentru Accces, Oracle, MySQL.
    Nu ma pasioneaza sa modific creearea BD si a tabelei de fiecare data cind schimb BD - ci sa las provider-ul sa isi faca treaba. De aceea intrebarea era pusa pe RONUA si nu pe SQL Server ... Oricum, multumesc pentru sugestii - am mai invatat ceva despre SQL Server cu XML!

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  01-30-2008, 2:42 PM 3881 in reply to 3880

    Re: RE: create database in Linq

    Nu mă pricep foarte bine la LINQ, dar nu cred că e treaba unui provider de LINQ să creeze tabele în baza de date. Cu alte cuvinte, nu cred că se poate acest lucru (nici acum, nici mai târziu), pentru că LINQ-ul este făcut pentru interogarea şi modificarea datelor, nu pentru modificarea structurilor de date.

    Răzvan
  •  01-30-2008, 2:47 PM 3882 in reply to 3881

    Re: RE: create database in Linq

    rsocol:
    Nu mă pricep foarte bine la LINQ, dar nu cred că e treaba unui provider de LINQ să creeze tabele în baza de date. Cu alte cuvinte, nu cred că se poate acest lucru (nici acum, nici mai târziu), pentru că LINQ-ul este făcut pentru interogarea şi modificarea datelor, nu pentru modificarea structurilor de date.

    Răzvan

    Dar de ce ar exista CreateDatabase pe DataContext ... ?
    Iar LINQ este facut pentru atitea , ca e de toate pentru toti ...

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  01-30-2008, 3:22 PM 3883 in reply to 3882

    Re: RE: create database in Linq

    Mda, nu ştiam de CreateDatabase, dar îmi menţin (încă) poziţia, deoarece CreateDatabase face parte din Linq to SQL, nu din Linq în general (deci e valabil doar pentru SQL Server). Din ceea ce citesc, înţeleg că metoda CreateDatabase este făcută pentru a crea o nouă "instanţă" a bazei de date, adică o nouă copie, fără date, dar cu aceeaşi structură ca cea a bazei de date iniţiale, pe baza mapping schema-ului care a fost stabilit la design-time. Documentaţia sugerează faptul că metoda CreateDatabase nu funcţionează decât cu un "strongly typed" DataContext, deci cred în continuare (până la proba contrarie) că nu este posibil acest lucru (anume să se creeze, folosind Linq, o tabelă cu o structură stabilită la run-time, iar acest lucru să funcţioneze pe diverşi provideri de Linq).

    Răzvan
  •  01-30-2008, 4:55 PM 3884 in reply to 3883

    Re: RE: create database in Linq

    rsocol:
    Mda, nu ştiam de CreateDatabase, dar îmi menţin (încă) poziţia, deoarece CreateDatabase face parte din Linq to SQL, nu din Linq în general (deci e valabil doar pentru SQL Server).


    Nu sunt de aceeasi parere ... Linq to SQL nu e doar pentru SQL Server ... ci si pentru Oracle, MySQL sau Active Directory ...

    rsocol:


     Din ceea ce citesc, înţeleg că metoda CreateDatabase este făcută pentru a crea o nouă "instanţă" a bazei de date, adică o nouă copie, fără date, dar cu aceeaşi structură ca cea a bazei de date iniţiale, pe baza mapping schema-ului care a fost stabilit la design-time. Documentaţia sugerează faptul că metoda CreateDatabase nu funcţionează decât cu un "strongly typed" DataContext, deci cred în continuare (până la proba contrarie) că nu este posibil acest lucru (anume să se creeze, folosind Linq, o tabelă cu o structură stabilită la run-time, iar acest lucru să funcţioneze pe diverşi provideri de Linq).

    Ma rog... cred ca pot sa il "pacalesc" pina la urma, cu reflection si dindu-i ce ii trebuie... doar ca e prea mult de "sapat" prin surse...
    Ma gindeam ca nu sunt singurul care vrea sa faca asa ceva...

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  01-30-2008, 7:01 PM 3885 in reply to 3884

    Re: RE: create database in Linq

    ignatandrei:

    Linq to SQL nu e doar pentru SQL Server ... ci si pentru Oracle, MySQL sau Active Directory ...


    Versiunea actuală de LINQ to SQL (cea din Visual Studio 2008 / .Net Framework 3.5) este doar pentru SQL Server.
    Vezi: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=269647
    şi răspunsul lui Keith Farmer (din 20 ian 2008) la http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2704165

    Pe de altă parte există LINQ to Entities sau LINQ to DataSet, prin care s-ar putea accesa şi alte baze de date, însă fără a avea la dispoziţie toate facilităţile din LINQ to SQL (inclusiv CreateDatabase-ul din DataContext).

    Răzvan
  •  01-31-2008, 12:09 PM 3893 in reply to 3885

    Re: RE: create database in Linq

    rsocol:
    ignatandrei:

    Linq to SQL nu e doar pentru SQL Server ... ci si pentru Oracle, MySQL sau Active Directory ...


    Versiunea actuală de LINQ to SQL (cea din Visual Studio 2008 / .Net Framework 3.5) este doar pentru SQL Server.
    Vezi: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=269647
    şi răspunsul lui Keith Farmer (din 20 ian 2008) la http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2704165

    Pe de altă parte există LINQ to Entities sau LINQ to DataSet, prin care s-ar putea accesa şi alte baze de date, însă fără a avea la dispoziţie toate facilităţile din LINQ to SQL (inclusiv CreateDatabase-ul din DataContext).

    Răzvan

    Ideea este ca mi se pare ca DataContext, care are un constructor  DataContext(IDbConnection connection); va putea fi folosita de catre orice BD ...
    Bun , in cel mai rau caz va fi OracleDataContext derivata din DataContext ... dar tot va avea CreateDatabase



    Ignat Andrei
    http://serviciipeweb.ro/iafblog
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems