Jer*_*vel 7 c# mapping entity-framework
根据评论中的每个建议编辑新情况:
目前我有这个映射
public ShowMap() {
ToTable("Shows");
HasKey(x => x.ShowID);
Property(x => x.ShowID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.IsRequired()
.HasColumnName("ShowID");
}
public EpisodeMap() {
ToTable("Episodes");
HasKey(x => x.EpisodeID);
Property(x => x.EpisodeID)
.IsRequired()
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.HasColumnName("EpisodeID");
Property(x => x.ShowID)
.IsRequired()
.HasColumnName("ShowID");
Property(x => x.EpisodeNumber)
.IsRequired()
.HasColumnName("EpisodeNumber");
}
Run Code Online (Sandbox Code Playgroud)
这导致以下数据库:


但是,当运行种子方法时,我收到此错误.因为我无法从命令行命令调试变量的值Update-Database(至少,据我所知),我无法看到该属性的含义.
一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性.
当我将关系添加到映射时,我收到以下错误:
在模型生成期间检测到一个或多个验证错误:
System.Data.Entity.Edm.EdmAssociationEnd :: Multiplicity在关系'Episode_Show'中的角色'Episode_Show_Source'中无效.由于"从属角色"是指关键属性,因此从属角色的多重性的上限必须为"1".
关系:
HasRequired(x => x.Show)
.WithMany(x => x.Episodes)
.HasForeignKey(x => x.EpisodeID);
Run Code Online (Sandbox Code Playgroud)
这是模型:
public class Episode {
public int EpisodeID {get; set;}
public int ShowID {get; set;}
public int EpisodeNumber {get; set;}
public virtual Show Show { get; set; }
}
public class Show {
public int ShowID {get; set;}
public virtual ICollection<Episode> Episodes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我忽略了什么导致验证错误?
编辑:只是为了确定我没有忘记任何事情,这是github上的项目.
Sla*_*uma 16
这是问题(来自您的git存储库,类EpisodeMap):
HasRequired(x => x.Show)
.WithMany(x => x.Episodes)
.HasForeignKey(x => x.EpisodeID);
Run Code Online (Sandbox Code Playgroud)
EpisodeID是PK in Episode和EF期望在这种情况下一对一映射没有Episodes集合而是Episode引用("multiplicity的上限= 1").
对于一对多的关系,它必须是:
HasRequired(x => x.Show)
.WithMany(x => x.Episodes)
.HasForeignKey(x => x.ShowID);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14509 次 |
| 最近记录: |