Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002

    Entity framework 4.0 e Joinn

    Ciao a tutti,
    sto utilizzando questa query

    codice:
    Dim prodotto As ps_product = db1.ExecuteStoreQuery(Of ps_product)("SELECT * FROM ps_product as p join ps_product_lang as pl on p.id_product= pl.id_product where p.id_product={0} and pl.id_lang=5;", record).SingleOrDefault
    Facendo questa join come faccio a recuperare le proprietà dell'altra tabella ?

    Cosi mi esegue la query ma mi ritornano solo i campi della prima tabella.

    Inoltre vorrei sapere come meglio fare le join con EF.

    Ovvero ho visto in giro che vengono usate le seguenti sintassi :

    codice:
    Dim Query As IQueryable(Of Groups) = _
    
                            From g In _objEntity.Groups _
    
                            Join u In _objEntity.Users On _
    
                            g.IDGroup Equals u.Groups.IDGroup _
    
                            Where u.UserID = CmbProvince.Text _
    
                            Select g


    codice:
    var account = from acct in _entities.Account.Include("Item.ItemDetails") where acct.Id == accountId &&acct.Item.ItemNumber.EndsWith (codice articolo) selezionare acct;
    [Edit by="totti240282" on="25 giugno 2012 12.55"][/Edit]

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    La soluzione che adotterei io è di creare una classe ps_product che mappa la tabella del db (tramite il context di EF). Nella creazione la relazioni con la tabella ps_product_lang dandogli la foreign key. Una volta relazionate e aggiunto l'oggetto (come attributo) ps_product_lang nella classe ps_product in automatico dovrebbe darti l'oggetto popolato.

    A questo punto fai le query come hai indicato tramite linq senza passare la query al context.

    In teoria dovrebbe bastare relazionare anche le tabelle nell'oggetto ps_product che hai creato te, e dovrebbe portarsi dietro la tabella relazionata popolata.

    codice:
    c#
    
    public class ps_product
    {
    
        ....
        [ForeignKey("RelatedLang")]
        public int id_product { get; set; }
       
        public virtual ps_product_lang RelatedLang { get; set; }

    Nella tabella ps_product_lang devi mettere la relazione con la tabella ps_lang


    LINQ

    codice:
    List<ps_lang> lst = (from p in ps_lang join l in ps_product_lang on
                                p.id_product == l.id_product
                                where <Cond>
                                select p);
    La soluzione sopra usa LINQ to Entities

    Per guardarti LINQ to entities dai uno sguardo a Entity Framework First Code. Riassumendo mappa gli oggetti al db e facendo le query usando linq (che si può tra l'altro usare ad esempio su liste tipizzate) si occupa lui di creare l'sql corretto, che rimane quindi "trasparente".

    Ciao

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Grazie per la risposta, ma la mia domanda/dubbio è quale sintassi usare, la prima (con il costrutto JOIN) o la seconda (include) o si equivalgono in tutto e per tutto ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.