Sto utilizzando Entity Framework 6.1.1 e ho una tabella Users
e una tabella User_Documents
(1: molti). Avevo già una proprietà di navigazione da User_Documents
a User
se le cose stavano andando bene.Entity Framework che si confonde con la proprietà di navigazione
public partial class User_Document
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long User_Document_ID { get; set; }
public long User_ID { get; set; }
[ForeignKey("User_ID")]
public virtual User User { get; set; }
}
ho aggiunto una proprietà di navigazione da utenti di User_Documents
public partial class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long User_ID { get; set; }
[StringLength(50)]
public string Username { get; set; }
public virtual List<User_Document> Documents { get; set; }
}
e ora sto ricevendo un errore quando si tenta di eseguire l'applicazione:
System.Data.Entity .ModelConfiguration.ModelValidationException: Uno o sono stati rilevati più errori di convalida durante la generazione del modello:
User_Documents: Nome: ciascun nome membro in un EntityContainer deve essere univoco. Un membro con nome 'User_Documents' è già definito.
Ovviamente c'è un tavolo chiamato User_Documents
ma nessun'altra proprietà con quel nome. Non sono sicuro di cosa si stia confondendo. Forse sta prendendo il nome della tabella "Utente" e il nome della proprietà "Documenti" e sta provando a creare qualcosa chiamato "User_Documents" al di fuori di esso? Se ho rinominarlo da Documents
a Some_Documents
come questo
public virtual List<User_Document> Some_Documents { get; set; }
allora ottengo un altro errore che indica
System.InvalidOperationException: Il modello di sostegno nell'ambito del 'PipeTrackerContext' è cambiato da quando il database è stato creato . Considerare l'utilizzo di codice prime migrazioni per aggiornare il database
Allora corro Add-Migration
e ottengo questo:
public override void Up()
{
AddColumn("dbo.User_Documents", "User_User_ID", c => c.Long());
CreateIndex("dbo.User_Documents", "User_User_ID");
AddForeignKey("dbo.User_Documents", "User_User_ID", "dbo.Users", "User_ID");
}
Perché Sta cercando di aggiungere una nuova colonna denominata User_User_ID
? Perché non posso semplicemente aggiungere la proprietà di navigazione Document
come desidero?
Puoi spiegare quale problema viene risolto e come lo risolve? –
questo collegamento potrebbe essere di aiuto: https://msdn.microsoft.com/en-us/data/jj591583.aspx – Iraj