【发布时间】:2014-12-29 19:37:38
【问题描述】:
我正在尝试在 Record 对象上创建两个多对多关系映射:
从
继承的记录对象public class Record {
public virtual ICollection<Language> SourceLanguages { get; set; }
public virtual ICollection<Language> TargetLanguages { get; set; }
}
第二个对象
public class Language
{
public int Language { get; set; }
public string Locale { get; set; }
public string LanguageName { get; set; }
public virtual ICollection<Record> Records { get; set; }
}
记录地图
public class RecordMap : EntityTypeConfiguration<Record>
{
this.HasMany(r => r.SourceLanguages)
.WithMany(c => c.Records)
.Map(sl =>
{
sl.ToTable("SourceLanguageRecordMap", "dbo");
sl.MapLeftKey("RecordId");
sl.MapRightKey("LanguageId");
});
this.HasMany(r => r.TargetLanguages)
.WithMany(c => c.Records)
.Map(tl =>
{
tl.ToTable("TargetLanguageRecordMap", "dbo");
tl.MapLeftKey("RecordId");
tl.MapRightKey("LanguageId");
});
}
当我在上面列出的对象上运行迁移时,我收到以下错误:
System.Data.Entity.Core.MetadataException:指定的架构不是 有效的。错误:关系 'Toolbox.EntityModel.Contexts.Record_SourceLanguages' 未加载 因为类型 'Toolbox.EntityModel.Contexts.Language' 不是 可用的。 ...
指定的架构无效。错误:关系 'Toolbox.EntityModel.Contexts.Record_SourceLanguages' 未加载 因为类型 'Toolbox.EntityModel.Contexts.Language' 不是 可用。
如果我将以下行注释掉,它将仅适用于 一对多 映射,但是,它会将 RecordId_Record 添加到语言表中。知道为什么吗?
this.HasMany(r => r.TargetLanguages)
.WithMany(c => c.Records)
.Map(tl =>
{
tl.ToTable("TargetLanguageRecordMap", "dbo");
tl.MapLeftKey("RecordId");
tl.MapRightKey("LanguageId");
});
知道我做错了什么吗?
【问题讨论】:
标签: entity-framework orm entity-framework-6