Наследование в entity framework


Download 39.18 Kb.
bet3/5
Sana28.10.2023
Hajmi39.18 Kb.
#1730049
1   2   3   4   5
Bog'liq
NASLEDOVANIYE ...

Общие столбцы
По умолчанию, когда два типа одноуровневых сущностей в иерархии имеют свойство с одинаковым именем, они будут сопоставлены с двумя отдельными столбцами. Однако если их тип идентичен, их можно сопоставить с тем же столбцом базы данных:
C#Копировать
public class MyContext : DbContext
{
public DbSet Blogs { get; set; }


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().ToTable("Blogs");
modelBuilder.Entity().ToTable("RssBlogs");
Совет
Вместо вызова ToTable для каждого типа сущности можно вызывать modelBuilder.Entity().UseTptMappingStrategy() для каждого корневого типа сущности, и имена таблиц будут созданы EF.

Download 39.18 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling