Guest User

Untitled

a guest
Feb 21st, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. class Autor {
  2. public long Id { get; set; }
  3. public string Nome { get; set; }
  4. public ICollection<Livro> Livros { get; set; }
  5. }
  6.  
  7. class Livro {
  8. public long Id { get; set; }
  9. public string Nome { get; set; }
  10.  
  11. [Column("EditoraId")]
  12. public long EditoraId { get; set; }
  13.  
  14. public ICollection<Autor> Autores { get; set; }
  15. }
  16.  
  17. class EFContext : DbContext {
  18. public DbSet<Editora> Editoras { get; set; }
  19. public DbSet<Livro> Livros { get; set; }
  20. public DbSet<Autor> Autores { get; set; }
  21.  
  22. protected override void OnModelCreating(DbModelBuilder modelBuilder) {
  23. modelBuilder.Entity<Autor>()
  24. .HasMany(autor => autor.Livros)
  25. .WithMany(livro => livro.Autores)
  26. .Map(x => {
  27. x.ToTable("livros_e_autores");
  28. x.MapLeftKey("autor_id");
  29. x.MapRightKey("livro_id");
  30. });
  31. }
  32.  
  33. public EFContext() {
  34. DropCreateDatabaseIfModelChanges<EFContext> initializer = new DropCreateDatabaseIfModelChanges<EFContext>();
  35. Database.SetInitializer(initializer);
  36. }
  37. }
  38.  
  39. public void ListaTodosLivroAutores() {
  40. using (EFContext ctx = new EFContext()) {
  41. var retornoLivro = from liv in ctx.Livros
  42. select liv;
  43. foreach(var itemLiv in retornoLivro) {
  44. Console.WriteLine("nCódigo Livro: " + itemLiv.Id
  45. + "nNome Livro: " + itemLiv.Nome);
  46.  
  47. var retornoAutor = from aut in ctx.Autores
  48. where ctx.Livros.Any(l => l.Id == itemLiv.Id)
  49. select aut;
  50. foreach(var itemAut in retornoAutor) {
  51. Console.WriteLine(" Autor: " + itemAut.Nome);
  52. }
  53. }
  54. }
  55. }
  56.  
  57. SELECT liv.Id "Código Livro",
  58. liv.Nome "Nome do Livro",
  59. aut.Nome "Autores"
  60. FROM dbo.livros_e_autores lea
  61. INNER JOIN dbo.Livroes liv ON liv.Id = lea.livro_id
  62. INNER JOIN dbo.Autors aut ON aut.Id = lea.autor_id
Add Comment
Please, Sign In to add comment