Sto usando EF Core con ASP Core 2.0. Utilizzando l'ultimo framework Identity. Ottengo questa eccezione sulla pagina Tutto.
InvalidOperationException: la proprietà "Utente" non è una proprietà di navigazione del tipo di entità "Galleria". Il metodo 'Include (string)' può essere utilizzato solo con un '.' elenco separato dei nomi delle proprietà di navigazione.
ApplicationUser si presenta come:
public class ApplicationUser : IdentityUser<Guid>
{
public ICollection<Gallery> Galleries { get; set; }
}
La Galleria Entità ha il seguente aspetto:
public class Gallery
{
public int Id { get; set; }
public Guid UserId { get; set; }
public string Title { get; set; }
public int? ArticleId { get; set; }
public string Photos { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public Article Article { get; set; }
public ApplicationUser User { get; set; }
[NotMapped]
public List<string> PhotosList
{
get { return Photos?.Split('|').ToList(); }
set { Photos = string.Join("|", value); }
}
}
Il controller per la vista ha il seguente aspetto:
public async Task<IActionResult> All()
{
var databaseContext = db.Galleries.Include(x => x.Article).Include(x => x.User);
return View(await databaseContext.ToListAsync());
}
Non ho idea del motivo per cui non si arresta sull'articolo ..
Il database è aggiornato.
aggiungi un attributo ForeignKey
using System.ComponentModel.DataAnnotations.Schema;
...
[ForeignKey("Article")]
public int? ArticleId { get; set; }
[ForeignKey("User")]
public Guid UserId { get; set; }
Puoi anche inserire l'attributo nella proprietà di navigazione
[ForeignKey("UserId")]
public ApplicationUser User { get; set; }
Inoltre, assicurati che dbContext erediti da IdentityDbContext<ApplicationUser, ...>
È possibile imbattersi in questo se si aggiungono manualmente proprietà aggiuntive ai modelli.
Per risolverlo, esegui SQL Profiler e acquisisci il RAW SQL, esegui l'SQL sul database e scopri perché la query non funziona, ovvero quale proprietà 'x' non è una proprietà di navigazione del tipo di entità 'y'.
Quindi vai al modello e rimuovi la proprietà aggiuntiva che hai aggiunto manualmente.
ps Se non si dispone di un dB dB, è possibile utilizzare un altro profiler. In alternativa basta controllare il Diff nel controllo del codice sorgente.