18 messaggi dal 23 agosto 2013
Ciao a tutti,

ho una dll (Data) dove, tramite EF, vengono create le classi DataModel.Context.cs e DataModell.tt. del mio database di prova.

Dalla (Business) aggiungo il riferimento a (Data) e quando utilizzo la proprieta creata da EF (DbSet<Clienti> Clientis) della context, non mi visualizza i metodi a meno che non aggiungo il pacchetto NuGet di EF.

Potete aiutarmi magari con un piccolissimo esempio..!

Grazie...
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

Bobo72 ha scritto:

non mi visualizza i metodi a meno che non aggiungo il pacchetto NuGet di EF.

Ok. Referenziando EntityFramework.dll dal tuo progetto principale riesci ad usare i metodi del DbSet<T>. Sembra che sia tutto corretto, qual è la tua richiesta?

ciao,
Moreno
Modificato da BrightSoul il 08 febbraio 2014 14.49 -

Enjoy learning and just keep making
18 messaggi dal 23 agosto 2013
Ciao Moreno,

non capisco il modo in cui devono essere strutturati i 3 layer.
Nella Business devo referenziare non solo il Data Layer ma anche EF per accedere a DbSet e' corretto cosi? Comunque poi nella Gui manchera' sempre il riferimento a EF!
Credevo di dover lavorare solo con linq to entity per accedere al data Layer ed eseguire le query ma, appunto, non capisco come impostare i layer.

Ti posto il codice vedi se puoi aiutarmi..!
Grazie comunque.
using System;
using System.Data.Entity;

namespace ProvaEntity_Console
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var db = new dataContext())
            {
                var cliente = new Cliente { RagioneSociale = "Marina militare" };

                db.Clienti.Add(cliente);
                db.SaveChanges();
            }

            Console.ReadLine();
        }

        //Modello
        class Cliente
        {
            public int ClienteId { get; set; }
            public string RagioneSociale { get; set; }
        }


        //Contesto
        class dataContext : DbContext
        {
            public DbSet<Cliente> Clienti { get; set; }
        }


    }
}


Ciao
Roberto
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Roberto, buona domenica!

Bobo72 ha scritto:

Nella Business devo referenziare non solo il Data Layer ma anche EF per accedere a DbSet e' corretto cosi?

Per evitare che anche il Business Layer abbia una dipendenza da Entity Framework, fai in modo che i metodi del tuo Data Layer restituiscano IQueryable<T> anziché DbSet<T>. E' sufficiente modificare il tipo restituito, perché DbSet<T> deriva da IQueryable<T>.

Così facendo però perdi i metodi del DbSet<T>, tipo l'Include, quindi dovrai sopperire a questa mancanza introducendo un tuo metodo che ne faccia le veci.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.