6 messaggi dal 27 marzo 2008
Ciao a tutti,

ho da poco iniziato a testare Entity Framework. Dopo aver creato un semplice Database in SQL Server 2008 R2 ho creato un progetto in Visual Studio 2010 nel quale ho inserito un oggetto ADO Entity Data Model. Utilizzando il wizard ho selezionato il database, le tabelle che mi interessavano e ho spuntato di importare anche le relazioni FK.

Terminata la creazione mi sono accorto che le tabelle era presenti correttamente ma le relazioni erano mancanti. Ho provato a crearle manualmente ma senza risultato.

Dopo vari tentativi mi sono accorto che le uniche relazioni che l'ADO Entity Data Model considera sono quelle tra campi di tipo intero (e non per esempio tra campi varchar).

Esiste un motivazione valida a tutto ciò? è un semplice bug? oppure è talmente sconsigliato l'uso di FK tra campi varchar da non permetterne l'utilizzo?

La versione della libreria Data.Entity è v4.0.30319.

grazie mille
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
sicuro che esista effettivamente una relazione tra quelle due tabelle? Una foreign key è un vincolo che devi per prima cosa aver creato a livello di database, altrimenti resti con un campo che - solo nominalmente - contiene ID di records presenti in un'altra tabella.

Usa il Sql Server Management Studio per assicurarti che la relazione esista (e per crearla se eventualmente non ci fosse).
https://www.youtube.com/watch?v=IXz5fpoopNo

boggione ha scritto.

ho spuntato di importare anche le relazioni FK.

Ok, la spunta in questione serve solo per aggiungere al tuo modello anche il campo coinvolto nel vincolo foreign key, che potrebbe anche non servirti data la presenza delle proprietà di navigazione. Se non metti la spunta, tutte le relazioni verrebbero comunque importate, è per questo che mi viene il dubbio che tali relazioni non siano state create nel database.

boggione ha scritto:

ho da poco iniziato a testare provare Entity Framework. Dopo aver creato un semplice Database in SQL Server 2008 R2 ho creato un progetto in Visual Studio 2010

Ok, considera anche una delle versioni gratuite di Visual Studio Express 2013. Ecco per esempio quella per il web.
http://www.visualstudio.com/it-it/downloads#d-2013-express
Se hai un PC che soddisfa i requisiti, potrai lavorare con la recente versione 6 di Entity Framework.

ciao,
Moreno
Modificato da BrightSoul il 14 giugno 2014 18.39 -

Enjoy learning and just keep making
6 messaggi dal 27 marzo 2008
Ciao,

grazie mille per la risposta rapida.
Il database è strutturato correttamente e le relazioni sono presenti.

Posso chiederti un piacere? Quando avrai tempo potresti fare un test e verificare la cosa? E' vero che non è una questione di vita o di morte (le cose funzionano bene con FK di tipo Int) ma sono curioso di sapere se anche ad altri capita la mia stessa cosa..

Grazie mille ancora
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
boggione ha scritto:

Quando avrai tempo potresti fare un test e verificare la cosa?

ok, prendiamo ad esempio il database Northwind che contiene alcune relazioni su colonne nchar e nvarchar.

Per semplificare, ho creato giusto le tabelle Customers e Orders, e creato una foreign key sul campo CustomerId, di tipo nchar. Ecco la struttura.
http://sqlfiddle.com/#!6/a3818

A quel punto sono tornato su Visual Studio 2013 e ho aggiunto un Entity Data Model, scegliendo di avvalermi del designer. Ecco le due tabelle che mi sono state mostrate dal wizard.
http://1drv.ms/1q04qmT

Dopo aver cliccato "Finish", il designer ha correttamente aggiunto le due classi di entità e l'associazione 1-a-molti che esiste tra loro.
http://1drv.ms/1osHKOX

Fai anche tu una prova con l'intero database northwind, vedi il problema ti si ripresenta anche con quello.

ciao,
Moreno
Modificato da BrightSoul il 15 giugno 2014 13.20 -

Enjoy learning and just keep making
6 messaggi dal 27 marzo 2008
Ciao,

sempre davvero molto gentile e preciso. Ho seguito i tuoi passi in un nuovo progetto e tutto funziona correttamente col Northwind. Allora ho provato ad usare lo stesso progetto con il mio database e... stavolta funziona! davvero non ho capito il perchè... ma meglio così!

Grazie mille e scusa per il tempo che ti ho fatto perdere..
13 messaggi dal 02 novembre 2013
Salve.
Sono alle prime armi con entity framework e mssql.
Ho creato un paio di progetti e sembrava funzionasse tutto ben.
l'ultimo, ho aggiunto una tabelle con delle relezioni fk e ho provato ad aggiornare l'EF.
non mi ha funzionato.
allora ho ricreato il progetto EF e riesco a visualizzare la anche la nuova tabella ma non riesco a visualizzare le nuove fk legate alla tabella appena inserita.
Sapreste dirmi dove ho sbagliato?
su mssql visualizzo le fk normalmente ma su EF nemmeno l'ombra!!
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
prova ad eliminare dal modello l'altra tabella coinvolta nella relazione, e poi prova a riaggiungerle entrambe.

Se non funziona comunque, posta il DDL, cioè le due istruzioni CREATE TABLE che servono a ricreare le due tabelle e il vincolo che esiste tra loro.

ciao,
Moreno

Enjoy learning and just keep making
13 messaggi dal 02 novembre 2013
Grazie moreno, togliendo la tabella e ricreandola l'ha presa magicamente.

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.