我想从使用隐式联合表的多个共同模式转换到可能关系,而是我想明确地使用联合表并实现一种多对多依赖实体的延迟加载。
这是由断开连接集的设计构成的,其中对象图通过http传递给应用服务器。在服务器上,我只更新密钥,而不是实体。 原因是:如果我尝试保存使用实体模型的不同实例定义的相同实体,则会出现并发方案错误。 相反,我不想传递对象,而只是想传递带有ID的联合表。
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。我尝试了很多案例。
答案 0 :(得分:2)
是的,这是可能的。您所需要的只是为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);