Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

Asp.Net Code Beispiel

 

Das folgende Beispiel zeigt, wie man in Asp.Net Core Anwendung bei jedem Besuch einer Seite den User Zähler in einer Datenbank erhöht.

Dabei werden für den aktuellen User die ID erfasst und in einer zusätzlichen Log-Tabelle jeder Besuch mit  der ID des Users und dem aktuellen Datum Uhrzeit eingetragen und ein Summenzähler erhöht.

Dadurch wird eine Log-Datei geschrieben und zur Optimierung der Laufzeit der View-Summenzähler für diesen Besucher erhöht.

 

Anwendung mit: Asp.Net Core 2 MVC, SQL Server, Entitiy Framework

 

 

using System;

using System.Collections.Generic;

using System.Diagnostics;

using System.Linq;

using System.Threading.Tasks;

using Microsoft.AspNetCore.Mvc;

using IWois_Core.Models;                //Models

using IWois_Core.Data;                  //Models

using Microsoft.EntityFrameworkCore;    //*tables

 

namespace IWois_Core.Controllers

{

    public class HomeController : Controller

    {

        private readonly ApplicationDbContext _context;

 

        public HomeController(ApplicationDbContext context)

        {

            _context = context;

        }

 

        //public IActionResult Index()

        public  async Task<IActionResult> Index()

        {

            //--< Get User ID >--

            //internal referenz-Number for tracking in tables

            long IDUser = await Common.ExtensionMethods.getIDUser_Number(this.User, _context);

            //--</ Get User ID >--

 

            //< Add log with time >

            Note_ViewLogModel newLog = new Note_ViewLogModel();

            newLog.IDUser = IDUser;

            newLog.dtView = DateTime.Now;

            _context.tbl_Notes_ViewLog.Add(newLog);

            //</ Add log with time >

 

            //--< Increment SumCounter >--

            User_SumModel sum = await _context.tbl_User_Sums.SingleOrDefaultAsync (m => m.IDUser == IDUser);

            if (sum == null)

            {

                sum = new User_SumModel();

                sum.SumViews  = 1;

                sum.IDUser = IDUser;

                sum.dtStart = DateTime.Now;

                sum.dtEnd = DateTime.Now;

                _context.tbl_User_Sums.Add (sum);               

            }

            else

            {

                sum.SumViews += 1;

                sum.dtEnd = DateTime.Now;

            }

            await _context.SaveChangesAsync();

            //--</ Increment SumCounter >--

 

 

            //< output Data >

            User_SumModel data = new User_SumModel();

            data.IDUser = IDUser;

            data.SumViews = sum.SumViews;

            //</ output Data >

 

            //-< goto View >--

            return View(data);

            //-</ goto View >--

        }

 

 

Summen Daten-Model

Die Daten Klasse, welche die Summenzahlen zusammenfasst.

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

//< using >

using System.ComponentModel.DataAnnotations;

//</ using >

 

namespace IWois_Core.Models

{

    public class User_SumModel

    {

        //-------------< Class: Model_Project >-------------

        #region Variables

        //------------< Region: Variables >------------

        //[Required]

        [Key]

        public long IDUser_Sum { get; set; }      

        public long IDUser { get; set; }

        public DateTime? dtStart { get; set; }

        public DateTime? dtEnd { get; set; }

        public int SumViews { get; set; }

        public int SumViews_Others { get; set; }

        public int SumFollowers { get; set; }

 

        //------------</ Region: Variables >------------

        #endregion /Variables

 

 

        #region Class

        //------------< Region: Class >------------

        public User_SumModel()

        {

 

        }

        //------------</ Region: Class >------------

        #endregion /Class

        //-------------</ Class: Model_Project >-------------

    }

}

 

 

Die Daten werden gezählt und angezeigt in der Homecontroller /Index View

@model IWois_Core.Models.User_SumModel 

@{

    ViewData["Title"] = "Home";

}

<div class="row">

   <div class="form-group">

        ID=@Model.IDUser

        <br />Views:@Model.SumViews   

    </div>

</div>

 

 

Im SQL Server entspricht das der Tabelle

 

CREATE TABLE [dbo].[tbl_User_Sums](

       [IDUser_Sum] [bigint] IDENTITY(1,1) NOT NULL,

       [IDUser] [bigint] NULL,

       [dtStart] [datetime] NULL,

       [dtEnd] [datetime] NULL,

       [SumViews] [int] NULL,

       [SumViews_Others] [int] NULL,

       [SumFollowers] [int] NULL,

 CONSTRAINT [PK_tbl_User_Sums] PRIMARY KEY CLUSTERED

(

       [IDUser_Sum] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

 

 

Die Datenverbindung von der SQL Datenbank zur Asp.Net Mvc Anwendung findet in

 

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;

using Microsoft.EntityFrameworkCore;

using IWois_Core.Models;

 

namespace IWois_Core.Data

{

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

    {

        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)

            : base(options)

        {

        }

 

        #region EF: Datase-Tabels to Models

        //------------< region: Datase-Tables to Models >------------

        public DbSet<Models.NoteModel> tbl_Notes { get; set; }

        public DbSet<Models.Note_ViewLogModel> tbl_Notes_ViewLog { get; set; }

        public DbSet<Models.Note_ViewLogSumModel> tbl_Notes_ViewLogSum { get; set; }

        public DbSet<Models.User_SumModel> tbl_User_Sums { get; set; }

        //public DbSet<Models.UserModel> AspNetUsers { get; set; }

 

        protected override void OnModelCreating(ModelBuilder modelBuilder)

        {

            base.OnModelCreating(modelBuilder);

            // Customize the ASP.NET Identity model and override the defaults if needed.

            // For example, you can rename the ASP.NET Identity table names and more.

            // Add your customizations after calling base.OnModelCreating(builder);

 

            modelBuilder.Entity<Models.NoteModel>().ToTable("tbl_Notes");

            modelBuilder.Entity<Models.Note_ViewLogModel>().ToTable("tbl_Notes_ViewLog");

            modelBuilder.Entity<Models.Note_ViewLogSumModel>().ToTable("tbl_Notes_ViewLogSum");

            modelBuilder.Entity<Models.User_SumModel>().ToTable("tbl_User_Sums");

            //modelBuilder.Entity<Models.UserModel>().ToTable("AspNetUsers");

        }

        //------------</ region : Datase-Tables to Models >------------

        #endregion /EF: Datase-Tabels to Models

    }

}

 

 

 

Erweiterung der Asp.Net Identity User-Tabelle

Damit die Asp.Net Anwendung den aktuellen User schneller identifiert und verwalten kann, kann man die Asp.Net User Tabelle mit einer IDUser Spalte erweitern.

Dadurch kann man den User intern in einer Anwendung per Nummer verwalten.

Tabelle: dbo.AspNetUsers  -> mit der Spalte IDUser bigInt Identity (1,1) not null erweitern

 

CREATE TABLE [dbo].[AspNetUsers](

       [Id] [nvarchar](450) NOT NULL,

       [IDUser] [bigint] IDENTITY(1,1) NOT NULL,

       [AccessFailedCount] [int] NOT NULL,

       [ConcurrencyStamp] [nvarchar](max) NULL,

       [Email] [nvarchar](256) NULL,

       [EmailConfirmed] [bit] NOT NULL,

       [LockoutEnabled] [bit] NOT NULL,

       [LockoutEnd] [datetimeoffset](7) NULL,

       [NormalizedEmail] [nvarchar](256) NULL,

       [NormalizedUserName] [nvarchar](256) NULL,

       [PasswordHash] [nvarchar](max) NULL,

       [PhoneNumber] [nvarchar](max) NULL,

       [PhoneNumberConfirmed] [bit] NOT NULL,

       [SecurityStamp] [nvarchar](max) NULL,

       [TwoFactorEnabled] [bit] NOT NULL,

       [UserName] [nvarchar](256) NULL,

 CONSTRAINT [PK_AspNetUsers] PRIMARY KEY CLUSTERED

 

Mobile
»
Asp.Net Core: Eigenen Email Provider einbinden
»
Chrome: wie kann man die Browser Informationen in Asp.Net Core 2 MVC ermitteln und anzeigen.
»
Client Auswertung mit Wangkanai Detection
»
Browser in Asp.Net Core 2 mit Wangkanai
»
Asp.Net Core 2 MVC: Email Sender Client schreiben.
»
Asp core: Cookie lesen und schreiben
»
Asp: Bild aktualisiert anzeigen trotz Browser Cache
»
Asp MVC: Formatiere Datum als Kurzes Datum
»
Asp MVC Core: HTML Text als HTML Elemente anzeigen
»
Asp: HTML in Text umwandeln

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de