Desbloqueo del poder de Entity Framework Core: funciones menos conocidas que debe conocer
Apr 01 2023
.
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
[ConvertToUtc]
public DateTime DateOfBirth { get; set; }
}
public class ConvertToUtcAttribute : Attribute { }
public class MyDbContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()
.Property(p => p.DateOfBirth)
.HasConversion(
v => v.ToUniversalTime(),
v => DateTime.SpecifyKind(v, DateTimeKind.Utc)
)
.HasAnnotation(nameof(ConvertToUtcAttribute), true);
}
}
using (var db = new MyDbContext())
{
var query = db.People
.Where(p => p.Age > 18)
.TagWith("MyApp: Adult People Query");
foreach (var person in query)
{
Console.WriteLine($"{person.Name} is an adult.");
}
}
public class MyDbContext : DbContext
{
public DbSet<Person> People { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()
.HasQueryFilter(p => !p.IsDeleted);
}
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
}
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
}
public class MyDbContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()
.OwnsOne(p => p.Address);
}
}
public class PersonSummary
{
public string Name { get; set; }
public int Age { get; set; }
}
public class MyDbContext : DbContext
{
public DbSet<Person> People { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<PersonSummary>(
eb =>
{
eb.HasNoKey();
eb.ToView("PersonSummaries");
eb.Property(p => p.Name).HasColumnName("PersonName");
}
);
}
}

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































