mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 优化 ManyToMany 导航属性约定命名匹配嵌套类;
This commit is contained in:
		@@ -952,67 +952,39 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                        if (pnv.Name.Length >= tbref.CsName.Length - 1)
 | 
					                        if (pnv.Name.Length >= tbref.CsName.Length - 1)
 | 
				
			||||||
                            midFlagStr = pnv.Name.Remove(pnv.Name.Length - tbref.CsName.Length - 1);
 | 
					                            midFlagStr = pnv.Name.Remove(pnv.Name.Length - tbref.CsName.Length - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        #region 在 trytb 命名空间下查找中间类
 | 
					                        void midTypeFind(TableInfo maintb, string findTypeName)
 | 
				
			||||||
                        if (midType == null)
 | 
					 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            midType = trytb.Type.IsNested ?
 | 
					                            if (midType == null)
 | 
				
			||||||
                                trytb.Type.Assembly.GetType($"{trytb.Type.Namespace?.NotNullAndConcat(".")}{trytb.Type.DeclaringType.Name}+{trytb.CsName}{tbref.CsName}{midFlagStr}", false, true) : //SongTag
 | 
					                            {
 | 
				
			||||||
                                trytb.Type.Assembly.GetType($"{trytb.Type.Namespace?.NotNullAndConcat(".")}{trytb.CsName}{tbref.CsName}{midFlagStr}", false, true);
 | 
					                                midType = maintb.Type.IsNested ?
 | 
				
			||||||
                            valiManyToMany();
 | 
					                                    maintb.Type.Assembly.GetType($"{maintb.Type.Namespace?.NotNullAndConcat(".")}{maintb.Type.DeclaringType.Name}+{findTypeName}", false, true) : //Song.SongTag
 | 
				
			||||||
 | 
					                                    maintb.Type.Assembly.GetType($"{maintb.Type.Namespace?.NotNullAndConcat(".")}{findTypeName}", false, true);
 | 
				
			||||||
 | 
					                                valiManyToMany();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        if (midType == null)
 | 
					                        midTypeFind(trytb, $"{trytb.CsName}{tbref.CsName}{midFlagStr}"); //SongTag
 | 
				
			||||||
                        {
 | 
					                        midTypeFind(trytb, $"{trytb.CsName}_{tbref.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}"); //Song_Tag
 | 
				
			||||||
                            midType = trytb.Type.IsNested ?
 | 
					                        midTypeFind(trytb, $"{tbref.CsName}{trytb.CsName}{midFlagStr}"); //TagSong
 | 
				
			||||||
                                trytb.Type.Assembly.GetType($"{trytb.Type.Namespace?.NotNullAndConcat(".")}{trytb.Type.DeclaringType.Name}+{trytb.CsName}_{tbref.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}", false, true) : //Song_Tag
 | 
					                        midTypeFind(trytb, $"{tbref.CsName}_{trytb.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}"); //Tag_Song
 | 
				
			||||||
                                trytb.Type.Assembly.GetType($"{trytb.Type.Namespace?.NotNullAndConcat(".")}{trytb.CsName}_{tbref.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}", false, true);
 | 
					 | 
				
			||||||
                            valiManyToMany();
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        if (midType == null)
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            midType = trytb.Type.IsNested ?
 | 
					 | 
				
			||||||
                                trytb.Type.Assembly.GetType($"{trytb.Type.Namespace?.NotNullAndConcat(".")}{trytb.Type.DeclaringType.Name}+{tbref.CsName}{trytb.CsName}{midFlagStr}", false, true) : //TagSong
 | 
					 | 
				
			||||||
                                trytb.Type.Assembly.GetType($"{trytb.Type.Namespace?.NotNullAndConcat(".")}{tbref.CsName}{trytb.CsName}{midFlagStr}", false, true);
 | 
					 | 
				
			||||||
                            valiManyToMany();
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        if (midType == null)
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            midType = trytb.Type.IsNested ?
 | 
					 | 
				
			||||||
                                trytb.Type.Assembly.GetType($"{trytb.Type.Namespace?.NotNullAndConcat(".")}{trytb.Type.DeclaringType.Name}+{tbref.CsName}_{trytb.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}", false, true) : //Tag_Song
 | 
					 | 
				
			||||||
                                trytb.Type.Assembly.GetType($"{trytb.Type.Namespace?.NotNullAndConcat(".")}{tbref.CsName}_{trytb.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}", false, true);
 | 
					 | 
				
			||||||
                            valiManyToMany();
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        #endregion
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        #region 在 tbref 命名空间下查找中间类
 | 
					                        if (trytb.Type.Namespace != tbref.Type.Name)
 | 
				
			||||||
                        if (midType == null)
 | 
					 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            midType = tbref.Type.IsNested ?
 | 
					                            midTypeFind(tbref, $"{trytb.CsName}{tbref.CsName}{midFlagStr}"); //SongTag
 | 
				
			||||||
                                tbref.Type.Assembly.GetType($"{tbref.Type.Namespace?.NotNullAndConcat(".")}{tbref.Type.DeclaringType.Name}+{trytb.CsName}{tbref.CsName}{midFlagStr}", false, true) : //SongTag
 | 
					                            midTypeFind(tbref, $"{trytb.CsName}_{tbref.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}"); //Song_Tag
 | 
				
			||||||
                                tbref.Type.Assembly.GetType($"{tbref.Type.Namespace?.NotNullAndConcat(".")}{trytb.CsName}{tbref.CsName}{midFlagStr}", false, true);
 | 
					                            midTypeFind(tbref, $"{tbref.CsName}{trytb.CsName}{midFlagStr}"); //TagSong
 | 
				
			||||||
                            valiManyToMany();
 | 
					                            midTypeFind(tbref, $"{tbref.CsName}_{trytb.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}"); //Tag_Song
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        if (midType == null)
 | 
					
 | 
				
			||||||
                        {
 | 
					                        //嵌套子类中查找
 | 
				
			||||||
                            midType = tbref.Type.IsNested ?
 | 
					                        midTypeFind(trytb, $"{trytb.CsName}+{trytb.CsName}{tbref.CsName}{midFlagStr}"); //Song.SongTag
 | 
				
			||||||
                                tbref.Type.Assembly.GetType($"{tbref.Type.Namespace?.NotNullAndConcat(".")}{tbref.Type.DeclaringType.Name}+{trytb.CsName}_{tbref.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}", false, true) : //Song_Tag
 | 
					                        midTypeFind(trytb, $"{trytb.CsName}+{trytb.CsName}_{tbref.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}"); //Song.Song_Tag
 | 
				
			||||||
                                tbref.Type.Assembly.GetType($"{tbref.Type.Namespace?.NotNullAndConcat(".")}{trytb.CsName}_{tbref.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}", false, true);
 | 
					                        midTypeFind(trytb, $"{trytb.CsName}+{tbref.CsName}{trytb.CsName}{midFlagStr}"); //Song.TagSong
 | 
				
			||||||
                            valiManyToMany();
 | 
					                        midTypeFind(trytb, $"{trytb.CsName}+{tbref.CsName}_{trytb.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}"); //Song.Tag_Song
 | 
				
			||||||
                        }
 | 
					
 | 
				
			||||||
                        if (midType == null)
 | 
					                        midTypeFind(tbref, $"{tbref.CsName}+{trytb.CsName}{tbref.CsName}{midFlagStr}"); //Tag.SongTag
 | 
				
			||||||
                        {
 | 
					                        midTypeFind(tbref, $"{tbref.CsName}+{trytb.CsName}_{tbref.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}"); //Tag.Song_Tag
 | 
				
			||||||
                            midType = tbref.Type.IsNested ?
 | 
					                        midTypeFind(tbref, $"{tbref.CsName}+{tbref.CsName}{trytb.CsName}{midFlagStr}"); //Tag.TagSong
 | 
				
			||||||
                                tbref.Type.Assembly.GetType($"{tbref.Type.Namespace?.NotNullAndConcat(".")}{tbref.Type.DeclaringType.Name}+{tbref.CsName}{trytb.CsName}{midFlagStr}", false, true) : //TagSong
 | 
					                        midTypeFind(tbref, $"{tbref.CsName}+{tbref.CsName}_{trytb.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}"); //Tag.Tag_Song
 | 
				
			||||||
                                tbref.Type.Assembly.GetType($"{tbref.Type.Namespace?.NotNullAndConcat(".")}{tbref.CsName}{trytb.CsName}{midFlagStr}", false, true);
 | 
					 | 
				
			||||||
                            valiManyToMany();
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        if (midType == null)
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            midType = tbref.Type.IsNested ?
 | 
					 | 
				
			||||||
                                tbref.Type.Assembly.GetType($"{tbref.Type.Namespace?.NotNullAndConcat(".")}{tbref.Type.DeclaringType.Name}+{tbref.CsName}_{trytb.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}", false, true) : //Tag_Song
 | 
					 | 
				
			||||||
                                tbref.Type.Assembly.GetType($"{tbref.Type.Namespace?.NotNullAndConcat(".")}{tbref.CsName}_{trytb.CsName}{(string.IsNullOrEmpty(midFlagStr) ? "" : "_")}{midFlagStr}", false, true);
 | 
					 | 
				
			||||||
                            valiManyToMany();
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        #endregion
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    isManyToMany = midType != null;
 | 
					                    isManyToMany = midType != null;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user