【发布时间】:2012-03-08 04:12:27
【问题描述】:
我首先使用 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, 电子邮件, ..., CreatedById, ModifiedById, CreatedOn, ModifiedOn, ... }
【问题讨论】:
标签: entity-framework