LoveRead.info » Книги » Разная литература » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

178 0 18:04, 26-08-2023
Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
26 август 2023

Книга Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читать онлайн бесплатно без регистрации

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле. Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных. Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

    1 ... 283 284 285 286 287 288 289 290 291 ... 407
    Перейти на страницу:
    достоверности ASP.NET Core нужен атрибут [Required]. Ниже приведен модифицированный код:

    [Required]

    [DisplayName("Make")]

    public int MakeId { get; set; }

    Финальное изменение заключается в добавлении свойства IsDrivable типа bool, не допускающего значения null, с поддерживающим полем, допускающим null, и отображаемым именем:

    private bool? _isDrivable;

    [DisplayName("Is Drivable")]

    public bool IsDrivable

    {

      get => _isDrivable ?? false;

      set => _isDrivable = value;

    }

    На этом обновление сущностного класса Car завершено.

    Сущность Customer

    Для таблицы Customers был создан шаблонный сущностный класс по имени Customer. Приведите операторы using к следующему виду:

    using System;

    using System.Collections.Generic;

    using System.ComponentModel.DataAnnotations.Schema;

    using System.Text.Json.Serialization;

    using AutoLot.Models.Entities.Base;

    using AutoLot.Models.Entities.Owned;

    Унаследуйте класс Customer от BaseEntityn удалите свойства Id и TimeStamp. Удалите конструктор и директиву #pragma nullable disable, после чего добавьте атрибут [Table] со схемой. Удалите свойства FirstName и LastName, т.к. они будут заменены принадлежащим сущностным классом Person. Вот как выглядит код в настоящий момент:

    namespace AutoLot.Models.Entities

    {

      [Table("Customers", Schema = "dbo")]

      public partial class Customer : BaseEntity

      {

        [InverseProperty(nameof(CreditRisk.Customer))]

        public virtual ICollection<CreditRisk> CreditRisks { get; set; }

        [InverseProperty(nameof(Order.Customer))]

        public virtual ICollection<Order> Orders { get; set; }

      }

    }

    Подобно сущностному классу Car в коде по-прежнему присутствуют проблемы, которые необходимо устранить, к тому же понадобится добавить принадлежащий сущностный класс. К навигационным свойствам нужно добавить атрибут [Jsonlgnore], атрибуты обратных навигационных свойств потребуется обновить с использованием суффикса Navigation, типы необходимо изменить на IEnumerable<T> с инициализацией, а модификатор virtual удалить. Ниже показан модифицированный код:

    [JsonIgnore]

    [InverseProperty(nameof(CreditRisk.CustomerNavigation))]

    public IEnumerable<CreditRisk> CreditRisks { get; set; } =

      new List<CreditRisk>();

    [JsonIgnore]

    [InverseProperty(nameof(Order.CustomerNavigation))]

    public IEnumerable<Order> Orders { get; set; } = new List<Order>();

    Осталось лишь добавить свойство с типом принадлежащего сущностного класса. Отношение будет позже сконфигурировано посредством Fluent API.

    public Person PersonalInformation { get; set; } = new Person();

    Итак, обновление сущностного класса Customer окончено.

    Сущность Make

    Для таблицы Makes был создан шаблонный сущностный класс по имени Make. Операторы using должны иметь следующий вид:

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.ComponentModel.DataAnnotations;

    using System.ComponentModel.DataAnnotations.Schema;

    using System.Text.Json.Serialization;

    using AutoLot.Models.Entities.Base;

    using Microsoft.EntityFrameworkCore;

    Унаследуйте класс Make от BaseEntity и удалите свойства Id и TimeStamp. Удалите конструктор и директиву #pragma nullable disable, а затем добавьте атрибут [Table] со схемой. Вот текущий код сущностного класса:

    namespace AutoLot.Models.Entities

    {

      [Table("Makes", Schema = "dbo")]

      public partial class Make : BaseEntity

      {

        [Required]

        [StringLength(50)]

        public string Name { get; set; }

        [InverseProperty(nameof(Inventory.Make))]

        public virtual ICollection<Inventory> Inventories { get; set; }

      }

    }

    В представленном далее коде демонстрируется инициализированное свойство Name, не допускающее null, и скорректированное навигационное свойство Cars (обратите внимание на изменение имени Inventory на Car в выражении nameof):

    [Required]

    [StringLength(50)]

    public string Name { get; set; } = "Ford";

    [JsonIgnore]

    [InverseProperty(nameof(Car.MakeNavigation))]

    public IEnumerable<Car> Cars { get; set; } = new List<Car>();

    На этом сущностный класс Make завершен.

    Сущность CreditRisk

    Для таблицы CreditRisks был создан шаблонный сущностный класс по имени CreditRisk. Приведите операторы using к такому виду:

    using System.ComponentModel.DataAnnotations.Schema;

    using AutoLot.Models.Entities.Base;

    using AutoLot.Models.Entities.Owned;

    Унаследуйте класс CreditRisk от BaseEntityиудалите свойства Id и TimeStamp. Удалите конструктор и директиву #pragma nullable disable и добавьте атрибут [Table] со схемой. Удалите свойства FirstName и LastName, т.к. они будут заменены принадлежащим сущностным классом Person. Ниже показан обновленный код сущностного класса:

    namespace AutoLot.Models.Entities

    {

      [Table("CreditRisks", Schema = "dbo")]

      public partial class CreditRisk : BaseEntity

      {

        public Person PersonalInformation { get; set; } = new Person();

        public int CustomerId { get; set; }

        [ForeignKey(nameof(CustomerId))]

        [InverseProperty("CreditRisks")]

        public virtual Customer Customer { get; set; }

      }

    }

    Исправьте навигационное свойство, для чего удалите модификатор virtual, используйте выражение nameof в атрибуте [InverseProperty] и добавьте к имени свойства суффикс Navigation:

    [ForeignKey(nameof(CustomerId))]

    [InverseProperty(nameof(Customer.CreditRisks))]

    public Customer? CustomerNavigation { get; set; }

    Финальное изменение заключается в добавлении свойства с типом принадлежащего сущностного класса. Отношение будет позже сконфигурировано посредством Fluent API.

    public Person PersonalInformation { get; set; } = new Person();

    Итак, сущностный класс CreditRisk закончен.

    Сущность Order

    Для таблицы Orders был создан шаблонный сущностный класс по имени Order. Модифицируйте операторы using следующим образом:

    using System;

    using System.ComponentModel.DataAnnotations.Schema;

    using AutoLot.Models.Entities.Base;

    using Microsoft.EntityFrameworkCore;

    Унаследуйте класс Order от BaseEntity и удалите свойства Id и TimeStamp. Удалите конструктор и директиву #pragma nullable disable, а затем добавьте атрибут [Table] со схемой. Вот текущий код сущностного класса:

    namespace AutoLot.Models.Entities

    {

      [Table("Orders", Schema = "dbo")]

      [Index(nameof(CarId), Name = "IX_Orders_CarId")]

      [Index(nameof(CustomerId), nameof(CarId),

         Name = "IX_Orders_CustomerId_CarId", IsUnique = true)]

      public partial class Order : BaseEntity

      {

        public int CustomerId { get; set; }

        public int CarId { get; set; }

        [ForeignKey(nameof(CarId))]

        [InverseProperty(nameof(Inventory.Orders))]

        public virtual Inventory Car { get; set; }

        [ForeignKey(nameof(CustomerId))]

        [InverseProperty("Orders")]

        public virtual Customer { get; set; }

        }

    }

    К именам навигационных свойств Car и Customer

    1 ... 283 284 285 286 287 288 289 290 291 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Людмила Хофман Людмила Хофман10 июнь 22:13 У меня перевернулся мир после прочтения ваших книг! Так приятно и чисто на душе, ведь по сути неважно кто с кем , а только любовь... Долгая игра - Рейчел Рид
    2. Анна Анна08 июнь 11:28 Спасибо за новую историю жизни и любви на сайте,прочитала с удовольствием .... Давай поженимся - Юлия Резник
    3. Елена Елена08 июнь 11:13 Прочла несколько романов этого, без сомнения, талантливого автора. Впечатление прекрасное, но хотелось бы когда-нибудь прочесть... Предатель. Ты врал мне годами - Арина Арская
    Все комметарии
    Новинки бесплатной онлайн библиотеки