ASP NET CORE RAZOR PAGE BAKIM TEKNİK SERVİS PROJESİ 029 MAKİNE MODEL CLASSININ OLUŞTURULMASI

Bu dersimizde artık her bir müşteri yani her bir kullanıcı için sahip oldukları CNC Makine veya CNC makineleri tanımlayabilmek için ilgili model classımızı oluşturacağım. Bunun için öncelikle benim veritabanımda bir tabloya ihtiyacım var. Bu tablom makinaları tutacak. Her bir makine de kullanıcılar ile bağlantılı olacak. Yani bir kullanıcının ID bilgisi makine tablomda foreign key olarak tutulacak.

Daha detaylı bilgi ve kod takibi için video eğitime bakınız.

Dolayısı ile öncelikle projeme yeni bir model class ekleyeceğim, Models klasörüne geliyor sağ tıklıyor ve yeni bir class seçip, adını Makine.cs veriyorum. Kodlarımı yazıyorum.

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace GursoyCNCBakim.Models
{
    public class Makine
    {
        [Key]
        public int Id { get; set; }

        [Required]
        public string SN { get; set; }

        [Required]
        public string Marka { get; set; }

        [Required]
        public string Model { get; set; }

        public string MakineTipi { get; set; }

        [Required]
        public int Yil { get; set; }

        [Required]
        public double MakineSaatSayac { get; set; }

        public string EkAciklama { get; set; }

        public string KullaniciId { get; set; }

        [ForeignKey("KullaniciId")]
        public virtual ApplicationUser ApplicationUser { get; set; }

    }
}

Class içinde propertylerimi tanımladım. Makine için ID bilgisi primary key olacağı için KEY attribute kullanıyorum. Makinenin seri no, marka, model bilgilerini zorunlu tuttum. Makine Torna tipi alanını zorunlu tutmadım. Makine imalat yılı için yıl dedim. SaatSayac propertysi ile makine çalışma saat bilgisini tutacağım. Sirket temsilcisi için kullanıcı id ile ilgili kullanıcıya makine bağlama işlemi yapacağım. Ek bir açıklama vs girilebilir diye EkAciklama diye bir alan daha ekledim.

İlgili model classımı oluşturdum şimdi ApplicationDbContext sınıfıma geliyor ve burada modelimi tanımlıyorum.

using System;
using System.Collections.Generic;
using System.Text;
using GursoyCNCBakim.Models;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace GursoyCNCBakim.Data
{
    public class ApplicationDbContext : IdentityDbContext
    {
        public ApplicationDbContext(DbContextOptions< ApplicationDbContext > options)
            : base(options)
        {
        }

        public DbSet< BakimTipi > BakimTipi { get; set; }
        public DbSet< ApplicationUser > ApplicationUser { get; set; }

        public DbSet< Makine > Makine { get; set; }
    }
}



Bu işlemde bitti, şimdi veritabanı kısmına değişiklikleri yansıtma zamanı, tools menüsüne geliyor ve Nuget Package Manager > Package Manager Console diyor ve console ekranımı açıyorum.

Burada yeni bir migration oluşturuyorum.

add-migration EkleMakineDB şeklinde komutumu yazıyorum.

İlgili Migration oluşturuluyor.

using Microsoft.EntityFrameworkCore.Migrations;

namespace GursoyCNCBakim.Data.Migrations
{
    public partial class EkleMakineDB : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AlterColumn< string >(
                name: "Name",
                table: "AspNetUserTokens",
                nullable: false,
                oldClrType: typeof(string),
                oldType: "nvarchar(128)",
                oldMaxLength: 128);

            migrationBuilder.AlterColumn< string >(
                name: "LoginProvider",
                table: "AspNetUserTokens",
                nullable: false,
                oldClrType: typeof(string),
                oldType: "nvarchar(128)",
                oldMaxLength: 128);

            migrationBuilder.AlterColumn< string >(
                name: "ProviderKey",
                table: "AspNetUserLogins",
                nullable: false,
                oldClrType: typeof(string),
                oldType: "nvarchar(128)",
                oldMaxLength: 128);

            migrationBuilder.AlterColumn< string >(
                name: "LoginProvider",
                table: "AspNetUserLogins",
                nullable: false,
                oldClrType: typeof(string),
                oldType: "nvarchar(128)",
                oldMaxLength: 128);

            migrationBuilder.CreateTable(
                name: "Makine",
                columns: table => new
                {
                    Id = table.Column< int >(nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    SN = table.Column< string >(nullable: false),
                    Marka = table.Column< string >(nullable: false),
                    Model = table.Column< string >(nullable: false),
                    MakineTipi = table.Column< string >(nullable: true),
                    Yil = table.Column< int >(nullable: false),
                    MakineSaatSayac = table.Column< double >(nullable: false),
                    EkAciklama = table.Column< string >(nullable: true),
                    KullaniciId = table.Column< string >(nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Makine", x => x.Id);
                    table.ForeignKey(
                        name: "FK_Makine_AspNetUsers_KullaniciId",
                        column: x => x.KullaniciId,
                        principalTable: "AspNetUsers",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Restrict);
                });

            migrationBuilder.CreateIndex(
                name: "IX_Makine_KullaniciId",
                table: "Makine",
                column: "KullaniciId");
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "Makine");

            migrationBuilder.AlterColumn< string >(
                name: "Name",
                table: "AspNetUserTokens",
                type: "nvarchar(128)",
                maxLength: 128,
                nullable: false,
                oldClrType: typeof(string));

            migrationBuilder.AlterColumn< string >(
                name: "LoginProvider",
                table: "AspNetUserTokens",
                type: "nvarchar(128)",
                maxLength: 128,
                nullable: false,
                oldClrType: typeof(string));

            migrationBuilder.AlterColumn< string >(
                name: "ProviderKey",
                table: "AspNetUserLogins",
                type: "nvarchar(128)",
                maxLength: 128,
                nullable: false,
                oldClrType: typeof(string));

            migrationBuilder.AlterColumn< string >(
                name: "LoginProvider",
                table: "AspNetUserLogins",
                type: "nvarchar(128)",
                maxLength: 128,
                nullable: false,
                oldClrType: typeof(string));
        }
    }
}

Akabinde değişikliklerin database tarafına yansıdığını görmek için package manager console alanında update-database komutumu yazıyorum ve veritabanımı güncelliyorum. Değişiklikler yansımış mı ? Kontrolümüzü de yaptık.

Daha detaylı bilgi ve kod takibi için video eğitime bakınız. Bir sonraki derste görüşmek üzere.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir