Я новичок в Entity Framework и учусь на курсах Pluralsight от Джули Лерман.Я смотрю второй курс " Entity Framework Core 2: Mappings ", но я использую EF Core 2.1.
Редактировать: поэтому я решил все прокомментировать и повторить курс итеперь он работает, НО сгенерированная миграция генерирует 2 столбца, которых там быть не должно:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<DateTime>(
name: "BetterName_Created",
table: "Samurais",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "GivenName",
table: "Samurais",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "BetterName_LastModified",
table: "Samurais",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "SurName",
table: "Samurais",
nullable: true);
}
SamuraiContext.cs
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<SamuraiBattle>().HasKey(s => new { s.SamuraiId, s.BattleId });
modelBuilder.Entity<Battle>().Property(b => b.StartDate).HasColumnType("Date");
modelBuilder.Entity<Battle>().Property(b => b.EndDate).HasColumnType("Date");
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
modelBuilder.Entity(entityType.Name).Property<DateTime>("Created");
modelBuilder.Entity(entityType.Name).Property<DateTime>("LastModified");
}
modelBuilder.Entity<Samurai>().OwnsOne(s => s.BetterName).Property(b => b.GivenName).HasColumnName("GivenName");
modelBuilder.Entity<Samurai>().OwnsOne(s => s.BetterName).Property(b => b.SurName).HasColumnName("SurName");
}
контекст foreach был создан еще до того, как я добавилИмя / Фамилия, пока все не работает как задумано.Но после добавления последних 2 строк для имени столбца он добавляет BetterName_Created и BetterName_LastModified почему?(по курсу не должно)
PersonFullName.cs
public class PersonFullName
{
public string SurName { get; set; }
public string GivenName { get; set; }
public string FullName => $"{GivenName} {SurName}";
public string FullNameReverse => $"{SurName}, {GivenName}";
public PersonFullName(string givenName, string surName)
{
SurName = surName;
GivenName = givenName;
}
}
Samurai.cs
public class Samurai
{
public int Id { get; set; }
public string Name { get; set; }
public PersonFullName BetterName { get; set; }
public List<Quote> Quotes { get; set; }
public List<SamuraiBattle> SamuraiBattles { get; set; }
public SecretIdentity SecretIdentity { get; set; }
public Samurai()
{
Quotes = new List<Quote>();
SamuraiBattles = new List<SamuraiBattle>();
}
}
С уважением, Адриано.