У меня есть следующая модель и конфигурация:
public class User
{
public int Id { get; set; }
public User CreatedBy { get; set; }
public DateTime? DateCreated { get; set; }
public string Name { get; set; }
public string Username { get; set; }
}
public class UserConfiguration : EntityTypeConfiguration<User>
{
public UserConfiguration()
{
this.HasKey(t => t.Id);
this.HasOptional(u => u.CreatedBy);
this.Property(u => u.DateCreated);
this.Property(u => u.Name).HasMaxLength(64);
this.Property(u => u.Username).HasMaxLength(64);
}
}
public class SampleContext : DbContext
{
public IDbSet<User> Users { get; set; }
public SampleContext(string dbConnection)
: base(dbConnection)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfiguration());
}
}
Я могу работать с контекстом и просто добавлять пользователей. Затем я посмотрел на таблицу, сгенерированную Code First, и понял, что свойство CreatedBy
создает не столбец CreatedById
, а столбец UserId
. Если я добавлю другое свойство, такое как ModifiedBy
, оно сгенерирует UserId1
и так далее:
Я также пытался сопоставить с HasRequired()
, но свойство по-прежнему генерирует имя столбца, соответствующее фактическому типу, а не имя свойства. Любая помощь будет оценена.