EFCodeFirst使用多对多关系我正在使用VisualStudio2010、C#4.0和EntityFramework5.0。多年来我一直在使用数据库优先开发,但我正在尝试先迁移到代码并遇到问题。阅读和搜索似乎无法解决问题我已将我的问题简化如下-我有两个类-Evaluator和Document。}publicclassAssessor{publicintAssessorID{get;放;}publicvirtualListDocuments{get;放;}}publicclassDocument{publicintDocumentID{get;放;}publicstringDocumentLocation{得到;得到;放;}publicvirtualListAssessors{get;放;}}withcontextpublicclassDocumentAssignment:DbContext{publicDbSetAssessors{get;放;}publicDbSetDocuments{get;放;评估者可以有很多文档,文档可以有很多评估者(经典的多对多关系)。我使用约定来创建关系,但也使用流畅的API。我播种了文件表。我的两个问题:一个-我想将文件分配给评估员-将其保存到数据库的最佳方式是什么?我有以下方法来检索分配给评估员的文件:publicstaticIEnumerableGetAssignedDocumentList(intUserID,stringConnectionString){using(DocumentAssignmentdbContext=newDocumentAssignment(ConnectionString)){returnreturnValue=dbContext.MaternalAssessments.Where(m=>m.AssessorID==UserID).Include(m=>m.MaternalDocuments).Select(m=>m.MaternalDocuments).ToList();但由于映射问题我无法编译。我究竟做错了什么?您必须通过覆盖DocumentAssignment中的OnModelCreating来告诉DbContext如何设置多对多关系。将此代码中的AssessorDocuments替换为关系表名称。protectedoverridevoidOnModelCreating(DbModelBuildermodelBuilder){modelBuilder.Entity().HasMany(a=>a.Documents).WithMany(d=>d.Assessors).Map(m=>{m.MapLeftKey("AssessorID");m.MapRightKey("DocumentID");m.ToTable("AssessorDocuments");});base.OnModelCreating(模型构建器);}将文档分配给评估者(假设文档存在,文档ID为1,评估者存在,评估ID为1):using(varcontext=newDocumentAssignment()){varassessor=context.Assessors.Find(1);vardocument=context.Documents.Find(1);评估员.Documents.Add(文件);context.SaveChanges();你的GetAssignedDocumentList方法是这样的:以上就是C#学习教程的全部内容:EFCodeFirst使用多对多的关系,如果对大家有用需要详细了解C#学习教程,希望你会更加关注它——publicstaticIEnumerableGetAssignedDocumentList(intUserID){using(varcontext=newDocumentAssignment()){returncontext.Documents.Where(d=>d.Assessors.Any(a=>a.AssessorID)==用户ID));}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
