我有两个有多对多关系的实体:
[Table("Student", Schema = "School")]
public class Student
{
public long ID { get; set; }
public virtual List<Teacher> Teachers { get; set; }
//...
}
[Table("Teacher", Schema = "School")]
public class Teacher
{
public long ID { get; set; }
public virtual List<Student> Students { get; set; }
//...
}
我在流畅的API中指定了如何构造连接表:
public StudentMap(string schema)
{
//Where schema = "School"
HasMany(p => p.Teachers)
.WithMany(p => p.Students)
.Map(m =>
{
m.ToTable("StudentsTeachers", schema);
m.MapLeftKey("Student_ID");
m.MapRightKey("Teacher_ID");
});
}
但是,当我去访问Student上的Teachers导航对象时,它默认为EF约定,而不是我为连接表指定的。如何指定SchoolContext
我们应该查看School.StudentsTeachers
表而不是dbo.StudentTeachers
?
问题不在于连接表的指定,也没有生成多对多关系。工作得很好。尝试使用实体时出现问题,我需要一种方法来指定关系应该使用我指定的连接表,而不是EF命名约定。通过使用如上所示的表属性,我能够使用其对表名的约定来解决EF的类似问题。我现在正在寻找一个等价的答案,除了关于存在的多对多连接表,但没有明确的模型
答案 0 :(得分:0)
我认为这应该有效:
ServiceStack.AuthUserSession.