额外列在多对多关系在实体框架5.0审查
我正在使用最新的实体框架,并遇到了多对多关系时,我想创建一个额外的列的问题。额外列在多对多关系在实体框架5.0审查
的问题是在这个较早的帖子提出了同样的: EF Code First Additional column in join table for ordering purposes
是今天仍然是问题,即一个人不能没有松动的多对多关系船(链接从对象A到B添加一个额外的列作为AB,因为映射变得和实体它自己)?
什么是一轮工作?
- 查一查A类,我需要再查询映射表
where(e=>e.A == a)让我Bs的一个?当我需要额外的柱子时,我会做MappingTable.find(a,b)? - 是否有其他建模选项,linq to sql会使它更容易?
 
回答:
据我所知,事情并没有因EF 5而改变。您需要按照链接说的去做。我喜欢坚持EF易于使用,但这只是我的意见...
回答:
我有同样的问题。我所做的工作就是创建另一个派生的DbContext来专门处理连接。我:
public class JoinContext : DbContext { 
    internal JoinContext() : base("name=SampleConnectionString") 
    { 
     PreventErrorIfDatabaseSchemaChanges(); 
     // Get the ObjectContext related to this DbContext 
     var objectContext = (this as IObjectContextAdapter).ObjectContext; 
    } 
    public DbSet<StudentImage> StudentImages { get; set; } 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<StudentImage>() 
      .ToTable("StudentImages"); 
      .HasKey(joinTable => new { joinTable.StudentId, joinTable.ImageId }); 
     base.OnModelCreating(modelBuilder); 
    } 
    private static void PreventErrorIfDatabaseSchemaChanges() 
    { 
     Database.SetInitializer<JoinContext>(null); 
    } 
} 
我离开了其他应用程序上下文与学生/图像多对多连接映射照原样。不要忘记为连接表指定一个复合键(参考上面的HasKey方法),否则EF在数据库初始化时炸弹。
之后,你有你的特殊加入背景下,使用存储库访问此背景下获取或设置所需的字段映射从连接表:
public class StudentRepository { 
    public int GetImageSortOrder(int studentId, int imageId) 
    { 
     var joinContext = new JoinContext(); 
     var joinTuple = joinContext.StudentImages.Find(studentId, imageId); 
     return joinTuple.SortOrder; 
    } 
} 
希望这有助于!
以上是 额外列在多对多关系在实体框架5.0审查 的全部内容, 来源链接: utcz.com/qa/258323.html

