Наследование в entity framework
Download 39,18 Kb.
|
NASLEDOVANIYE ...
- Bu sahifa navigatsiya:
- Конфигурация таблицы на тип
Общие столбцы
По умолчанию, когда два типа одноуровневых сущностей в иерархии имеют свойство с одинаковым именем, они будут сопоставлены с двумя отдельными столбцами. Однако если их тип идентичен, их можно сопоставить с тем же столбцом базы данных: C#Копировать public class MyContext : DbContext { public DbSet protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity .Property(b => b.Url) .HasColumnName("Url"); modelBuilder.Entity .Property(b => b.Url) .HasColumnName("Url"); } } public abstract class BlogBase { public int BlogId { get; set; } } public class Blog : BlogBase { public string Url { get; set; } } public class RssBlog : BlogBase { public string Url { get; set; } } Примечание Поставщики реляционных баз данных, такие как SQL Server, не будут автоматически использовать дискриминационный предикат при запросе общих столбцов при использовании приведения. Запрос Url = (blog as RssBlog).Url также вернет Url значение для одноуровневых Blog строк. Чтобы ограничить запрос RssBlog сущностями, необходимо вручную добавить фильтр для дискриминатора, например Url = blog is RssBlog ? (blog as RssBlog).Url : null. Конфигурация таблицы на тип В шаблоне сопоставления TPT все типы сопоставляются с отдельными таблицами. Как свойства базового типа, так и свойства производного типа хранятся в таблице, сопоставленной с этим типом. В таблицах, сопоставленных с производными типами, также хранится внешний ключ, который соединяет производную таблицу с базовой таблицей. C#Копировать modelBuilder.Entity modelBuilder.Entity Совет Вместо вызова ToTable для каждого типа сущности можно вызывать modelBuilder.Entity Download 39,18 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2025
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling