TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1389 1.78K
День 1123. #ЧтоНовенького
Новинки Entity Framework Core 6. Часть 1
1. Атрибут Unicode
Новый атрибут Unicode позволяет сопоставлять строковое свойство со столбцом, отличным от Unicode, без прямого указания типа базы данных. Атрибут Unicode игнорируется, если система баз данных поддерживает только типы Unicode.
public class Book
{
// …
[Unicode(false)]
public string Title { get; set; }
}

2. Атрибут Precision
До EF Core 6.0 вы могли настроить точность с помощью Fluent API. Теперь вы можете сделать это также с помощью аннотаций:
public class Product
{
// …
[Precision(precision: 10, scale: 2)]
public decimal Price { get; set; }
}

3. Атрибут Column
Помогает указать порядок столбцов в создаваемых таблицах. Также это можно сделать с помощью нового Fluent API — HasColumnOrder().
public class EntityBase
{
[Column(Order = 1)]
public int Id { get; set; }
[Column(Order = 99)]
public DateTime CreatedOn { get; set; }
}
public class Person : EntityBase
{
[Column(Order = 2)]
public string FirstName { get; set; }
[Column(Order = 3)]
public string LastName { get; set; }
}

4. Атрибут EntityTypeConfiguration
Помогает EF Core найти и использовать подходящую конфигурацию. До этого нужно было создавать экземпляр конфигурации класса и вызывать его из метода OnModelCreating:
public class ProductConfig : 
IEntityTypeConfiguration<Product>
{
public void Configure(EntityTypeBuilder<Product> b)
{
b.Property(p => p.Name).HasMaxLength(250);
b.Property(p => p.Price).HasPrecision(10, 2);
}
}

[EntityTypeConfiguration(typeof(ProductConfig))]
public class Product
{
// …
}

5. Предварительная конфигурация модели
Позволяет вам указать конфигурацию сопоставления один раз для данного типа. Это может быть полезно, например, при работе с объектами-значениями.
public class ExampleContext : DbContext
{
public DbSet<Person> People { get; set; }

protected override void
ConfigureConventions(ModelConfigurationBuilder mcb)
{
mcb.Properties<string>()
.HaveMaxLength(500);
mcb.Properties<decimal>()
.HavePrecision(12, 2);
mcb.Properties<Address>()
.HaveConversion<AddressConverter>();
}
}

Здесь для поля типа Address будет использоваться класс конвертера, сериализующий значение в JSON:
public class AddressConverter : 
ValueConverter<Address, string>
{
public AddressConverter()
: base(
v => JsonSerializer.Serialize(v,
(JsonSerializerOptions)null),
v => JsonSerializer.Deserialize<Address>(v,
(JsonSerializerOptions)null))
{
}
}

Источник: https://blog.okyrylchuk.dev/entity-framework-core-6-features-part-1
  • 👍 5
More from @netdeveloperdiary
  1. Oct 15, 2026Post #3374
  2. Oct 14, 2026Post #3373
  3. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  4. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  5. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  6. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →