Sto usando il primo approccio al codice EF. Ho iniziato a creare file di mapping (provengo da sfondo nihbernate) ma ho scoperto che non ne hai davvero bisogno a meno che non sia necessario apportare alcune modifiche.
Mi chiedo che cosa utilizzerà per la convenzione di denominazione dei miei Id’s?
Sarà Product_Id
o ProductId
?
modificare
Sulla base dei commenti finora mi lascia un po ‘perplesso. Mi stavo chiedendo perché ho aggiunto 2 nuove classi (cioè le tabelle) e le ho collegate e ricreato il mio database.
Entrambi i FK nei miei tavoli che hanno una relazione con le mie nuove tabelle hanno tutti “ID_Prodotto” e ho pensato che forse era perché non avevo alcuna mapping per questo.
Ho appena provato a utilizzare la mapping e lo stesso problema.
Tutte le altre relazioni sulle tabelle hanno il caso superiore di Camel.
Modifica 2
Hmm sta succedendo qualcosa di strano ha lo stesso nome due volte nel mio tavolo. Una volta lo tratta come un FK e un’altra volta lo tratta come una normale colonna.
Modifica 3
Capito, parlarne e postare qui mi aiuta a isolare il problema. Il motivo era perché stavo facendo il poco
public Product Product {get; set;} public Guid ProductId { get; set; }
Ora rilascio il mio ProductId che ho impostato come un tipo di int, quindi quello che stava succedendo sarebbe stato generare una colonna denominata ProductId nel db e poi quando ha avuto il tempo di creare l’FK non poteva più usare ProductId e ha dovuto usare Product_Id
Per impostazione predefinita, IdKeyDiscoveryConvention
è registrato e in base alla relativa documentazione :
Il rilevamento della chiave primaria non fa distinzione tra maiuscole e minuscole. I modelli di denominazione riconosciuti sono, in ordine di precedenza:
‘Id’
[nome tipo] Id
È ansible utilizzare ProductId
o Id
e verrà riconosciuto come chiave primaria dalle convenzioni di denominazione di Entity Framework.
Puoi anche utilizzare l’annotazione dei dati Key se vuoi interrompere la convenzione.
[Key] public int Product_Id {get;set;} //Note the underscore
Puoi anche utilizzare l’API Fluent:
modelBuilder.Entity().HasKey(t => t.Product_Id); //Breaking convention again!