Mat*_*att 6 mapping entity-framework code-first
我有两张桌子:
需求
评论
这些表没有外键,也没有添加任何外键的可能性.我正试图在EF中映射它们.我有每个类,我试图用流畅的代码定义关系,将Comment.Job_ID映射到Requirement.JobNumber.要求可以有很多评论.要求具有注释列表,而注释具有Requirement属性.
我有这个映射设置:
modelBuilder.Entity<Comment>().HasRequired(c => c.Requirement)
.WithMany(s => s.Comments)
.HasForeignKey(f => f.Job_ID);
Run Code Online (Sandbox Code Playgroud)
我试图让Comment.Job_ID映射到Requirement.JobNumber.
任何帮助赞赏.
这是不可能的.对于实体框架,Comment.Requirement导航属性所引用的实体通常由(主)键属性标识Requirement,即通过ID.没有映射选项来定义目标属性是除键属性之外的任何东西 - 比如JobNumber或其他非键属性.
我只能想象你可以"伪造"模型中的主键属性JobNumber而不是ID(假设JobNumber在Requirement表中是唯一的):
modelBuilder.Entity<Requirement>().HasKey(r => r.JobNumber);
Run Code Online (Sandbox Code Playgroud)
我不知道是否会有其他不受欢迎的副作用.(为了确保它不会,如果工作JobNumber是不是独一无二的,因为EF不允许有与连接到一个框架,并且更新/删除相同的密钥多个实体等不会在数据库中找到正确的记录. )对我来说,这感觉是错误的和黑客的.老实说,我甚至不会尝试这样做,因为你在数据库中没有真正的外键关系,忘记导航属性Requirement.Comments,Comment.Requirement并join在LINQ中使用手册来关联表数据/实体,因为我需要它们在特定情况下.
| 归档时间: |
|
| 查看次数: |
7489 次 |
| 最近记录: |