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 -> ClassStudent
和 Class -> 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);
我想使用隐式联合 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 -> ClassStudent
和 Class -> 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);