首先使用关系表中的属性编码多对多关系

阿杰·尼卡姆(Ajay Nikam)

我想用关系表创建关系属性。以下是参考代码。但是代码创建了2个表BookStudents和BookStudents1。其中一个具有没有属性键的关系属性,而另一个具有没有属性但具有外部键的关系表。我该如何解决这个问题?

public class BookStudent
{
    [Key, Column(Order = 0)]
    public int BookID { get; set; }
    [Key, Column(Order = 1)]
    public int StudentID { get; set; }
    public DateTime FromDate { get; set; }
    public DateTime ToDate { get; set; }
}


public class Context : DbContext
{
    public Context() : base("name=DefaultConnection") { }
    public DbSet<Book> Books { get; set; }
    public DbSet<Student> Students { get; set; }
    public DbSet<BookStudent> BookStudents { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Book>().HasMany<Student>(t => t.Students).WithMany(t => t.Books).Map(t =>
        {
            t.MapLeftKey("BookId");
            t.MapRightKey("StudentId");
            t.ToTable("BookStudents");
        });
    }
}
阿帕那

在代码优先的情况下,我们不需要在OnModelCreating上显式定义关系。使用下面的代码,这将解决您的问题。

public class BookStudent
{
    [Key, Column(Order = 0)]
    public int BookID { get; set; }
    [Key, Column(Order = 1)]
    public int StudentID { get; set; }
    public DateTime FromDate { get; set; }
    public DateTime ToDate { get; set; }

    //below two lines will define foreign key
    public Student Student { get; set; }
    public Book Book { get; set; }
}


public class Context : DbContext
{
    public Context() : base("name=DefaultConnection") { }
    public DbSet<Book> Books { get; set; }
    public DbSet<Student> Students { get; set; }
    public DbSet<BookStudent> BookStudents { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //remove below code
        //modelBuilder.Entity<Book>().HasMany<Student>(t => t.Students).WithMany(t => t.Books).Map(t =>
        //{
        //    t.MapLeftKey("BookId");
        //    t.MapRightKey("StudentId");
        //    t.ToTable("BookStudents");
        //});
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

首先使用关系表中的属性编码多对多关系

来自分类Dev

使用Entity Framework中的导航属性填充多对多关系表

来自分类Dev

使用注释与属性多对多关系

来自分类Dev

单个表在Access中的多对多关系

来自分类Dev

检查多对多关系或属性

来自分类Dev

与联接表的多对多关系

来自分类Dev

连接表/多对多关系

来自分类Dev

反对 js:无法使用连接表额外属性更新多对多关系。说附加属性无效

来自分类Dev

在多对多关系中在数据透视表中设置属性

来自分类Dev

如何从多对多关系表中获取第三个属性?

来自分类Dev

在Pony ORM中是否可以向多对多关系的中间表添加额外的属性?

来自分类Dev

风帆中的多对多关系

来自分类Dev

NDB中的多对多关系

来自分类Dev

Cakephp中的多对多关系

来自分类Dev

Django中的多对多关系

来自分类Dev

Laravel中的多对多关系

来自分类Dev

如何使用AutoMapper将关系表中的信息从多对多关系表映射到实体模型类

来自分类Dev

是否可以在多对多关系中添加额外的属性?

来自分类Dev

如何从多对多关系的属性中获取Django查询的值?

来自分类Dev

如何从多对多关系的属性中获取Django查询的值?

来自分类Dev

从多对多关系中的联接获取属性值

来自分类Dev

使用JPA映射具有属性的多对多关系

来自分类Dev

在 Laravel 中使用 stock 属性设置多对多关系

来自分类Dev

Laravel中多对多关系的联接表命名约定

来自分类Dev

休眠在查询多对多关系中找不到关联表

来自分类Dev

Flask-Sqlalchemy,多对多关系中的辅助表的主键

来自分类Dev

SQLAlchemy在与关联表多对多关系中插入数据

来自分类Dev

透视表中雄辩的多对多关系访问表列值

来自分类Dev

查询从多对多关系桥接表中检索数据

Related 相关文章

  1. 1

    首先使用关系表中的属性编码多对多关系

  2. 2

    使用Entity Framework中的导航属性填充多对多关系表

  3. 3

    使用注释与属性多对多关系

  4. 4

    单个表在Access中的多对多关系

  5. 5

    检查多对多关系或属性

  6. 6

    与联接表的多对多关系

  7. 7

    连接表/多对多关系

  8. 8

    反对 js:无法使用连接表额外属性更新多对多关系。说附加属性无效

  9. 9

    在多对多关系中在数据透视表中设置属性

  10. 10

    如何从多对多关系表中获取第三个属性?

  11. 11

    在Pony ORM中是否可以向多对多关系的中间表添加额外的属性?

  12. 12

    风帆中的多对多关系

  13. 13

    NDB中的多对多关系

  14. 14

    Cakephp中的多对多关系

  15. 15

    Django中的多对多关系

  16. 16

    Laravel中的多对多关系

  17. 17

    如何使用AutoMapper将关系表中的信息从多对多关系表映射到实体模型类

  18. 18

    是否可以在多对多关系中添加额外的属性?

  19. 19

    如何从多对多关系的属性中获取Django查询的值?

  20. 20

    如何从多对多关系的属性中获取Django查询的值?

  21. 21

    从多对多关系中的联接获取属性值

  22. 22

    使用JPA映射具有属性的多对多关系

  23. 23

    在 Laravel 中使用 stock 属性设置多对多关系

  24. 24

    Laravel中多对多关系的联接表命名约定

  25. 25

    休眠在查询多对多关系中找不到关联表

  26. 26

    Flask-Sqlalchemy,多对多关系中的辅助表的主键

  27. 27

    SQLAlchemy在与关联表多对多关系中插入数据

  28. 28

    透视表中雄辩的多对多关系访问表列值

  29. 29

    查询从多对多关系桥接表中检索数据

热门标签

归档