Сначала я использую код EF для определения двух отношений в сложном типе с неудачным результатом исключения InvalidOperation "{" Выражение 'p => p.AuditInfo.CreatedBy' не является допустимым выражением свойства. Выражение должно представлять свойство: C #: 't => t.MyProperty' VB.Net: 'Function (t) t.MyProperty'. "}"
Что я делаю не так?
Соответствующий код:
public class AuditInfo
{
public DateTime? CreatedOn { get; internal set; }
public Guid? CreatedById { get; internal set; }
public User CreatedBy { get; internal set; }
public DateTime? ModifiedOn { get; internal set; }
public Guid? ModifiedById { get; internal set; }
public User ModifiedBy { get; internal set; }
public byte[] ModifiedTimestamp;
}
public class User
{
public Guid Id { get; internal set; }
public string Email { get; internal set; }
public AuditInfo AuditInfo { get; internal set; }
}
class UserMap : EntityTypeConfiguration<User>
{
public UserMap()
{
this.HasOptional(p => p.AuditInfo.CreatedBy).WithMany().HasForeignKey(p => p.AuditInfo.CreatedById);
this.HasOptional(p => p.AuditInfo.ModifiedBy).WithMany().HasForeignKey(p => p.AuditInfo.ModifiedById);
}
}
public class Test3DbContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.ComplexType<AuditInfo>();
modelBuilder.Configurations.Add(new UserMap());
}
}
Таблица базы данных:
Пользователь {Id, Email, ..., CreatedById, ModifiedById, CreatedOn, ModifiedOn, ...}