Тема: C# задача
Зробити довідник автомобілів підприємства. В кожного автомобіля є марка, тип, колір та номерний знак. Врахувати що можуть бути абсолютно ідентичні автомобілі з різними номерними знаками. Уникнути дублювання даних. Зробити можливість додавати та видаляти як автомобілі так і їх моделі.
Ще треба зробити підключення до БД використовуючи entity framework. Так як в мене mac os, даний фреймворк використовувати стає складніше і без "танців з бубнами" нічого не вийде реалізувати. Можливо хтось стикався з подібним кейсом, підкажіть будь-ласка, як його налаштувати на mac os.
Підключення ms sql server налаштував з допомогою docker та azure data studio. 
Залишається налаштувати entity framework
Є код.
Але є проблема в тому, що цей код потрібно переробити під даний кейс і він написаний на низькому рівні. Треба використати ООП. Що потрібно підправити, переробити щоб він відповідав завданню?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Авто
{
    class Program
    {
        //simple list of models
        static public List<string> Model = new List<string>();
        //structure for the car
        public struct Car
        {
            public string Number;//number off car
            public string Model;//model
            public string Color;//color
        }
        static public List<Car> Cars = new List<Car>();//list off cars
        //add new model
        static void AddModel()
        {
            string m;
            Console.Write("new model: ");
            m = Console.ReadLine().Trim().ToUpper();//removes if there are side spaces and uppercase
            foreach(string md in Model)//enumeration of existing models
                if (md == m)//this model already exists 
                {
                    Console.WriteLine("this model is already exists!");
                    return;
                }
            Model.Add(m);
        }
        //
        static void ShowModel()
        {
            if (Model.Count > 0)
                for (int i = 0; i < Model.Count; i++)//output models
                    Console.WriteLine("{0,2}) - {1}", i + 1, Model[i]);
            else Console.WriteLine("Model list is empty!\n\n");
        }
        //delete model?
        static void DelModel()
        {
            if (Model.Count > 0)//if we have some model
            {
                int i;
                Console.Write("delete model(1-{0}): ", Model.Count);
               
                int.TryParse(Console.ReadLine(), out i);
                if (i > 0 && i <= Model.Count)
                {
                    foreach(Car cr in Cars)
                        if (cr.Model == Model[i - 1])//suddenly there are cars of this model
                        {
                            Console.WriteLine("there are cars of this model!");
                            return;
                        }
                    Console.WriteLine("model {0} is deleted", Model[i - 1]);
                    Model.RemoveAt(i - 1);//deleted
                }
                else Console.WriteLine("no such model!");
            }
            else Console.WriteLine("the list off models is empty!\n\n");
        }
        //
        static void AddCar()
        {
            if (Model.Count > 0)//if there are models 
            {
                Console.Write("model(1-{0}): ", Model.Count);
                int i;
                int.TryParse(Console.ReadLine(), out i);
                if (i < 1 || i > Model.Count)
                {
                    Console.WriteLine("invalid model index!");
                    return;
                }
                Car cr;
                cr.Model = Model[i - 1];
                Console.Write("number: ");
                cr.Number = Console.ReadLine().Trim().ToUpper();//removes if there are side spaces and uppercase
                foreach(Car car in Cars)//we sort out cars
                    if (cr.Number == car.Number)//numbers matched
                    {
                        Console.WriteLine("A car with the same number already exists!");
                        return;
                    }
                Console.Write("Цвет: ");
                cr.Color = Console.ReadLine().Trim();
                Cars.Add(cr);//added new car
            }
            else Console.WriteLine("There are no car models!");
        }
        //показывает машины
        static void ShowCar()
        {
            if (Cars.Count > 0)//if there are cars
                for (int i = 0; i < Cars.Count; i++)//showed all cars
                    Console.WriteLine("{0,2}) - №:{1} model:{2} color:{3}", i + 1, Cars[i].Number, Cars[i].Model, Cars[i].Color);
            else Console.WriteLine("the list off cars is empty!\n\n");
        }
        //delete car
        static void DelCar()
        {
            if (Cars.Count > 0)//if there are some cars
            {
                int i;
                Console.Write("delete this car (1-{0}): ", Cars.Count);
                int.TryParse(Console.ReadLine(), out i);
                if (i > 0 && i <= Cars.Count)//delete this car
                {
                    Console.WriteLine("this car {0} {1} {2} deleted",
                        Cars[i - 1].Number, Cars[i - 1].Model, Cars[i - 1].Color);
                    Cars.RemoveAt(i - 1);
                }
                else Console.WriteLine("no such car!");
            }
            else Console.WriteLine("!\n\n");
        }
        //
        static void Main(string[] args)
        {
            Menu();
            ConsoleKey ck;
            do
            {
                ck = Console.ReadKey(true).Key;//if keydown
                switch (ck)
                {
                    //ConsoleKey.D1:     keydown off key 1 
                   
                    case ConsoleKey.D1:
                    case ConsoleKey.NumPad1: AddModel();
                        break;
                    case ConsoleKey.D2:
                    case ConsoleKey.NumPad2: ShowModel();
                        break;
                    case ConsoleKey.D3:
                    case ConsoleKey.NumPad3: DelModel();
                        break;
                    case ConsoleKey.D4:
                    case ConsoleKey.NumPad4: AddCar();
                        break;
                    case ConsoleKey.D5:
                    case ConsoleKey.NumPad5: ShowCar();
                        break;
                    case ConsoleKey.D6:
                    case ConsoleKey.NumPad6: DelCar();
                        break;
                    case ConsoleKey.D0:
                    case ConsoleKey.NumPad0: Menu();
                        break;
                }
            } while (ck != ConsoleKey.Escape);//while esc not pressed 
        }
        //
        static void Menu()
        {
            Console.Clear();
            Console.WriteLine(" 1  new model");
            Console.WriteLine(" 2  watch all models");
            Console.WriteLine(" 3  delete model");
            Console.WriteLine(" 4  new car");
            Console.WriteLine(" 5  watch all cars");
            Console.WriteLine(" 6  delete car");
            Console.WriteLine(" 0  clear screen");
            Console.WriteLine("Esc  exit");
        }
    }
}