EF 中的多对多关系在没有链接到实体的情况下建立

Many to Many relation in EF made without links to the entity

我想使用隐式联合 table 从许多共同模式转变为可能关系,而是我想显式使用联合 table 并实现一种许多的延迟加载-对多依赖实体。

这是由断开连接的集合设计构成的,其中对象图通过 http 传递到应用程序服务器。在服务器上,我只更新密钥,而不更新实体。 这样做的原因:如果我尝试保存用实体模型的不同实例定义的同一个实体,我会得到并发场景错误。 相反,我不想传递对象,而只想传递带有 ID 的关节 table。

Class
-------
int ID
List ClassStudent

Student
-------
int ID
List ClassStudent


ClassStudent // this type must be explicitely defined in the model
--------------
StudentID
ClassID

是否可以使用 FluentApi 定义这样的配置?

常见的场景是使用类型:

Student
---------------
int ID
List Classes

Class
----------
int ID
List Students

我不需要这个因为并发更改。 需要流利的帮助API。我试过很多案例。

是的,这是可能的。您只需要为 ClassStudent 和两个单向 one-to-many 关系(Student -> ClassStudentClass -> ClassStudent)配置复合 PK。

像这样:

modelBuilder.Entity<ClassStudent>()
    .HasKey(e => new { e.StudentID, e.ClassID });

modelBuilder.Entity<Student>()
    .HasMany(e => e.ClassStudent)
    .WithRequired()
    .HasForeignKey(e => e.StudentID);

modelBuilder.Entity<Class>()
    .HasMany(e => e.ClassStudent)
    .WithRequired()
    .HasForeignKey(e => e.ClassID);