442 messaggi dal 09 marzo 2006
scusa ma ho 2000 entità come faccio a passargliele tutte ?
le entita sono nel context come :
public class  DbIfc: DbContext
{
    public DbIfc():base("EFDbContext")
    {}


               public DbSet< uos > uosentity { get; set; }
               public DbSet< uos1 > uos1entity { get; set; }
                  ecc...... fino a 2000 entità


grazie
le ho generate con un .tt template e la reflection da una dll che contiene le entità vere e proprie al limite posso modificare il generatore di codice aggiungendo tutte le entità a una collection, che collection è meglio usare?
grazie.
Modificato da giuseppe500 il 02 gennaio 2016 17.40 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
ci sono delle cose che non mi sono chiare, per esempio come tieni in memoria tutte le entità, dopo che le hai lette dall'xml.
Hai una List<object> (o array) in cui sono contenute tutte oppure le tieni organizzate in una classe che ha 2000 proprietà di tipo List (o array)?

Nel primo caso prova semplicemente a dare in pasto la lista al metodo BulkInsert.
Nel secondo caso, penso che dovrai usare la reflection per enumerare tutte le proprietà di quella classe ed invocare il BulkInsert con ciascuna.
Potrebbe funzionare in tempi decenti ma ho forti dubbi che questo sia l'approccio più performante in assoluto. Forse bisognava valutare database documentali, non so. Non conosco sufficientemente lo scenario per potermi fare un'idea valida.

Tornando al problema, mi puoi far vedere un pezzo di codice più completo? Come arrivi a questo?

context.Set<iso_10303>().Add(entity);

Si tratta di codice che hai scritto tu o che hai generato?
La variabile entity come la ottieni?

ciao
Modificato da BrightSoul il 02 gennaio 2016 18.18 -

Enjoy learning and just keep making
442 messaggi dal 09 marzo 2006
no, il codice l'ho generato con un template tt e la reflection per scovare tutti i tipi che ho generato con il tool xsd .
solo ho generato solo questa parte:



public DbSet<integerwrapper> integerwrapperentity { get; set; }
public DbSet<stringwrapper> stringwrapperentity { get; set; }
che sono proprietà ora vorrei inserire in queste proprietà la classe istanziata
e ho fatto cosi:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new uos());
            modelBuilder.Configurations.Add(new uos1());
            modelBuilder.Configurations.Add(new Entity());
            modelBuilder.Configurations.Add(new hexBinary());
            modelBuilder.Configurations.Add(new IfcCompoundPlaneAngleMeasure());
            modelBuilder.Configurations.Add(new longwrapper());
            ecc.....

           

ma non so se è giusto come faccio ad inserire le classi istanziate in entity framework.
scusate se sto sbagliando tutto perche alcune classi mi danno errore.tipo:
modelBuilder.Configurations.Add(new uos());
errore:
Error9The type arguments for method 'System.Data.Entity.ModelConfiguration.Configuration.ConfigurationRegistrar.Add<TComplexType>(System.Data.Entity.ModelConfiguration.ComplexTypeConfiguration<TComplexType>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.c:\tmp\ifc\consoleapplication1\consoleapplication1\texttemplate1.cs1459
grazie
442 messaggi dal 09 marzo 2006
in pratica nel mio xml ho una classe padre che si chiama iso_10303 e contiene le altre entita se ci sono, io ho deserializzato un xml con iso_10303 e tutte le sue classi e ho settato nella proprieta del dbset la classe deserializzata .
è sbagliato?
in pratica la classe padre è un grafo di classi
11.886 messaggi dal 09 febbraio 2002
Contributi

in pratica la classe padre è un grafo di classi

ok, allora enumera le proprietà dell'oggetto di tipo iso_10303 per poi ottenere tutti gli altri oggetti appartenenti al suo grafo.
Sai come fare? Ecco un esempio:
https://dotnetfiddle.net/uSd4O8

Ogni oggetto ottenuto, passalo al BulkInsert come vedi nell'esempio. Non ho capito se le proprietà di iso_10303 restituiscono delle liste o degli oggetti singoli. Nell'esempio ho assunto che fossero delle liste.

giuseppe500 ha scritto:

ma non so se è giusto come faccio ad inserire le classi istanziate in entity framework.

Con il metodo BulkInsert offerto dalla libreria che ti ho segnalato.

Il metodo Add di modelBuilder.Configurations serve invece a tutt'altro scopo, ovvero a configurare il mapping delle tue classi con il modello relazionale del database. Cosa forse superflua se le classi e le loro proprietà rimappano 1:1 sulle rispettive tabelle e colonne. Se hai seguito la convenzione di nomi di EF, dovrebbe pure capire qual è la chiave primaria di ogni classe. Se non riesce a capirlo dal nome, avrai un errore.

ciao,
Moreno

Enjoy learning and just keep making
442 messaggi dal 09 marzo 2006
no,va avanti all infinito a questo punto penso proprio che ci siano dei problemi di configurazione con sql server , io ho due istanze un sqlexpress e uno sql server 12.
ho inserito un server da visual studio con il suo nome e testato la connessione, riuscita , non so dove sbattere la testa.
hai qualche idea?
non ho provato ad usare il file .mdf potrebbe essere quello?
oppure devo usare le migrations uso ef 6 ho trovato dei comandi tipo :
enable-migrations -ContextProjectName MyProject.MVC -StartUpProjectName MyProject.MVC
-ContextTypeName MyProject.MVC.MyContextFolder.MyContextName -ProjectName MyProject


ma non so cosa sotituire nella console pm e non ho capito bene cosa sono le migrations.
grazie
Modificato da giuseppe500 il 03 gennaio 2016 02.24 -
442 messaggi dal 09 marzo 2006
questo è l'errore che mi da, ho fatto quello che mi hai detto...

Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.

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.