无法在EF Code First中创建复合主键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在EF Code First中创建复合主键相关的知识,希望对你有一定的参考价值。
我正在尝试在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:'Punction(t)t.MyProperty'。当指定多个属性时,使用匿名类型:C#:'t => new {t.MyProperty1,t.MyProperty2}'VB.Net:'Function(t)New With {t.MyProperty1,t.MyProperty2}'。
这个例外没有任何意义。请注意,我在第一个代码示例的第四行配置了我的主键,它明确遵循异常中指定的匿名类型格式,所以我坚持这一点。
观察:我知道我的代码包含葡萄牙语文本,我可以将其翻译成英文,但前提是它是绝对必要的。
以上是关于无法在EF Code First中创建复合主键的主要内容,如果未能解决你的问题,请参考以下文章