﻿Scaffold-DbContext "Server=B-PC;Database=Takt;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/DB -NoPluralize

Scaffold-DbContext "Server=SQL2019;Database=tmpBJ;Trusted_Connection=True;TrustServerCertificate=True;" Microsoft.EntityFrameworkCore.SqlServer -Context TaktContext -OutputDir Models/DB -NoPluralize -Force

=====================================================
AspNetUserRoles -> Scaffold EF 7
=====================================================
AspNetRoles
    public virtual ICollection<AspNetUserRoles> AspNetUserRoles { get; } = new List<AspNetUserRoles>();

AspNetUsers
    public virtual ICollection<AspNetUserRoles> AspNetUserRoles { get; } = new List<AspNetUserRoles>();

AgencijaContext
    public virtual DbSet<AspNetUserRoles> AspNetUserRoles { get; set; }

    modelBuilder.Entity<AspNetUserRoles>(entity =>
		{
			entity.HasKey(e => new { e.UserId, e.RoleId })
				.HasName("PK_dbo.AspNetUserRoles");

			entity.Property(e => e.UserId).HasMaxLength(128);
			entity.Property(e => e.RoleId).HasMaxLength(128);
			entity.HasOne(d => d.Role)
				.WithMany(p => p.AspNetUserRoles)
				.HasForeignKey(d => d.RoleId)
				.HasConstraintName("FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId");

			entity.HasOne(d => d.User)
				.WithMany(p => p.AspNetUserRoles)
				.HasForeignKey(d => d.UserId)
				.HasConstraintName("FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId");
		});

    modelBuilder.Entity<AspNetUsers>(entity =>
        -- maknuti relaciju na AspNetUserRoles
        entity.HasMany(d => d.Role).WithMany(p => p.User)
            .UsingEntity<Dictionary<string, object>>(
                "AspNetUserRoles",
                r => r.HasOne<AspNetRoles>().WithMany()
                    .HasForeignKey("RoleId")
                    .HasConstraintName("FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId"),
                l => l.HasOne<AspNetUsers>().WithMany()
                    .HasForeignKey("UserId")
                    .HasConstraintName("FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId"),
                j =>
                {
                    j.HasKey("UserId", "RoleId").HasName("PK_dbo.AspNetUserRoles");
                    j.IndexerProperty<string>("UserId").HasMaxLength(128);
                    j.IndexerProperty<string>("RoleId").HasMaxLength(128);
                });

=====================================================
AspNetUserRoles -> Scaffold EF 6
=====================================================
AspNetRoles
	AspNetUserRoles = new HashSet<AspNetUserRoles>();

	public virtual ICollection<AspNetUserRoles> AspNetUserRoles { get; set; }

AspNetUsers
	AspNetUserRoles = new HashSet<AspNetUserRoles>();

	public virtual ICollection<AspNetUserRoles> AspNetUserRoles { get; set; }

AgencijaContext
    public virtual DbSet<AspNetUserRoles> AspNetUserRoles { get; set; }

	modelBuilder.Entity<AspNetUserRoles>(entity =>
            {
                entity.HasKey(e => new { e.UserId, e.RoleId })
                    .HasName("PK_dbo.AspNetUserRoles");

                entity.Property(e => e.UserId).HasMaxLength(128);

                entity.Property(e => e.RoleId).HasMaxLength(128);

                entity.HasOne(d => d.Role)
                    .WithMany(p => p.AspNetUserRoles)
                    .HasForeignKey(d => d.RoleId)
                    .HasConstraintName("FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId");

                entity.HasOne(d => d.User)
                    .WithMany(p => p.AspNetUserRoles)
                    .HasForeignKey(d => d.UserId)
                    .HasConstraintName("FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId");
            });


=====================================================
AgencijaContext.cs nakon ažuriranja baze
=====================================================

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    if (!optionsBuilder.IsConfigured)
    {
        var con = Startup.ConnectionString;
        optionsBuilder.UseSqlServer(con);
    }
}

=========================================================================================
But, To execute the stored procedures, use FromSql method which executes RAW SQL queries
=========================================================================================
e.g.

var products= context.Products
    .FromSql("EXECUTE dbo.GetProducts")
    .ToList();
	
To use with parameters

var productCategory= "Electronics";

var product = context.Products
    .FromSql("EXECUTE dbo.GetProductByCategory {0}", productCategory)
    .ToList();
or

var productCategory= new SqlParameter("productCategory", "Electronics");

var product = context.Product
    .FromSql("EXECUTE dbo.GetProductByName  @productCategory", productCategory)
    .ToList();
	
There are certain limitations to execute RAW SQL queries or stored procedures.
You can’t use it for INSERT/UPDATE/DELETE. if you want to execute INSERT, UPDATE, DELETE queries, use the ExecuteSqlCommand

var categoryName = "Electronics";
dataContext.Database
           .ExecuteSqlCommand("dbo.InsertCategory @p0", categoryName);
=========================================================================================

SF - v18.1.0.54 - MjYzNjk0QDMxMzgyZTMxMmUzMEtpN0c0OFg4L3RaakFyRmFHSVpQZUdFZ2hVY1pDMUZmWlp0MFNjVjVGYkk9;MjYzNjk1QDMxMzgyZTMxMmUzMEd6bnlxWWtZUkVwcUZxcmJEclREaVVrTkxnbkxMUDdMZ29zOEh4TU9JUjg9;MjYzNjk2QDMxMzgyZTMxMmUzMFdDeWlFRitDSmtQcmM2eEt0MDlXTGpYTjVvemVBQWo3YmVyUFFCVHZJb0U9;MjYzNjk3QDMxMzgyZTMxMmUzMGJqQmZDMlViYy92RER5NmJja2RaL3FsbTNEcmlmTHd4aFlEMzBmTEhRZ1U9;MjYzNjk4QDMxMzgyZTMxMmUzMEZzRWxWa1NmeW8wbmxzcVZqWDFqM1ZLWUpobkJjYThLOWovMG9ER05reDg9;MjYzNjk5QDMxMzgyZTMxMmUzMFFTbXJ5Qnh4RllsaUZiUWliSElYVmVicWZUZUxvYXNjWmJUK0R0ajhWRHc9;MjYzNzAwQDMxMzgyZTMxMmUzMElJUjMvREsrVThwaHZEbmhZZ2Y0cGcvaTE5TFl2R09GajFVR0tiMkJJVDg9;MjYzNzAxQDMxMzgyZTMxMmUzMFlQQ1lEaVZkNURQYytSMTJPNlMyV09BekxQTlJGS0h0OTVSNm5hWVByMEk9;MjYzNzAyQDMxMzgyZTMxMmUzMGppNytFald2WUZQSkhWeGo4V2F5VmZsNVdiY01zWDduUW9EYy9ybzVMUzQ9;NT8mJyc2IWhia31ifWN9ZmdoYmF8YGJ8ampqanNiYmlmamlmanMDHmgxNiE9MiE3fTkmIT86PTITPCYnPzw8OH0wPD4=;MjYzNzAzQDMxMzgyZTMxMmUzMGRUQ0ZGdGRuOVJhTFNmblVqK1l6VVdLbzRZL2t3M1ZZbEpLSnZSUFJ1cGs9