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? π



