Entity Framework Core 2 – Owned types
Entity Framework Core 2 was released on August 14th. It brought new features.
On this article I will explain one of them : Owned types
They existed in previous versions of Entity Framework under the name of “complex types” and then disappeared from Entity Framework Core 1
It is a grouping of fields of the same SQL table in a type belonging to the entity corresponding to the same SQL table.
Example, we want to group in table Person properties : FirstName, MiddleName, LastName under a subtype named Name:
This table will be mapped like this:
public class Person { public int BusinessEntityID { get; set; } public Name Name { get; set; } } public class Name { public string FirstName { get; set; } public string MiddleName { get; set; } public string LastName { get; set; } }
Configuration required:
You must declared in the primary entity Person a key, then you have to map your properties FirstName, MiddleName, LastName to the subtype Name.
Example:
public class PersonConfiguration : IEntityTypeConfiguration<Person> { public void Configure(EntityTypeBuilder<Person> builder) { builder.HasKey(x => x.BusinessEntityID); builder.OwnsOne(x => x.Name).Property(c=> c.FirstName).HasColumnName("FirstName"); builder.OwnsOne(x => x.Name).Property(c => c.MiddleName).HasColumnName("MiddleName"); builder.OwnsOne(x => x.Name).Property(c => c.LastName).HasColumnName("LastName"); builder.ToTable("Person", "Person"); } }
So Person owns Name
Usage:
Glad to see this feature come back? 🙂