【发布时间】:2019-04-08 12:21:24
【问题描述】:
我正在尝试在 EF 上进行新项目的首次迁移,但我不断收到一个没有意义的异常。
我正在为我的每个业务类使用单独的配置类,而收到异常的是这个:
public class AlunoAcessaArquivoMapeamento : EntityTypeConfiguration<AlunoAcessaArquivo> {
public AlunoAcessaArquivoMapeamento() {
ToTable(Regex.Replace(typeof(AlunoAcessaArquivo).Name, "([^A-Z])([A-Z])", "$1_$2").ToLower());
HasKey(e => new {e.AlunoId, e.ArquivoId});
HasRequired(a => a.Aluno).WithMany(a => a.AlunosAcessaArquivos).HasForeignKey(a => a.AlunoId);
HasRequired(a => a.Arquivo).WithMany(a => a.AlunosAcessaArquivos).HasForeignKey(a => a.ArquivoId);
}
}
它配置的类就是这个类,是一个简单的多对多关系表:
public class AlunoAcessaArquivo : EntidadeBase {
public virtual Aluno Aluno { get; set; }
public virtual Arquivo Arquivo { get; set; }
public long AlunoId;
public long ArquivoId;
}
当我尝试Add-Migration 时出现异常:
System.InvalidOperationException:属性表达式 'e => new f__AnonymousType0`2(AlunoId = e.AlunoId, ArquivoId = e.ArquivoId)' 无效。该表达式应表示一个属性:C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'。指定多个属性时使用匿名类型:C#: 't => new { t.MyProperty1, t.MyProperty2 }' VB.Net: 'Function(t) New With { t.MyProperty1, t.MyProperty2 }'。
这个例外没有任何意义。请注意,我在第一个代码示例的第四行配置了我的主键,它显然遵循异常中指定的匿名类型格式,所以我坚持这样做。
【问题讨论】:
标签: c# entity-framework ef-code-first entity-framework-migrations