diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 9afddbb3..311acc99 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -265,6 +265,18 @@ namespace base_entity public string Name { get; set; } } + interface IDeleteSoft + { + /// + /// 软删除 + /// + bool IsDeleted { get; set; } + } + class TestComment01 : IDeleteSoft + { + public bool IsDeleted { get; set; } + } + static void Main(string[] args) { #region 初始化 IFreeSql @@ -313,6 +325,7 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + fsql.CodeFirst.GetTableByEntity(typeof(TestComment01)); fsql.Select(); diff --git a/Examples/base_entity/base_entity.xml b/Examples/base_entity/base_entity.xml index 430381e1..c340101f 100644 --- a/Examples/base_entity/base_entity.xml +++ b/Examples/base_entity/base_entity.xml @@ -74,6 +74,11 @@ 创建日期2 + + + 软删除 + + 角色表 diff --git a/FreeSql/Internal/CommonUtils.cs b/FreeSql/Internal/CommonUtils.cs index d72cd338..786bc2b3 100644 --- a/FreeSql/Internal/CommonUtils.cs +++ b/FreeSql/Internal/CommonUtils.cs @@ -635,25 +635,28 @@ namespace FreeSql.Internal if (string.IsNullOrEmpty(comment) == false) dic.Add("", comment); //class注释 } - var props = localType.GetPropertiesDictIgnoreCase().Values; - foreach (var prop in props) + foreach (var entityType in localType.GetInterfaces().Concat(new[] { localType })) { - className = (prop.DeclaringType.IsNested ? $"{prop.DeclaringType.Namespace}.{prop.DeclaringType.DeclaringType.Name}.{prop.DeclaringType.Name}" : $"{prop.DeclaringType.Namespace}.{prop.DeclaringType.Name}").Trim('.'); - node = xmlNav.SelectSingleNode($"/doc/members/member[@name='P:{className}.{prop.Name}']/summary"); - if (node == null) + var props = entityType.GetPropertiesDictIgnoreCase().Values; + foreach (var prop in props) { - if (level == 0 && prop.DeclaringType.Assembly != localType.Assembly) + className = (prop.DeclaringType.IsNested ? $"{prop.DeclaringType.Namespace}.{prop.DeclaringType.DeclaringType.Name}.{prop.DeclaringType.Name}" : $"{prop.DeclaringType.Namespace}.{prop.DeclaringType.Name}").Trim('.'); + node = xmlNav.SelectSingleNode($"/doc/members/member[@name='P:{className}.{prop.Name}']/summary"); + if (node == null) { - var cbs = LocalGetComment(prop.DeclaringType, level + 1); - if (cbs != null && cbs.TryGetValue(prop.Name, out var otherComment) && string.IsNullOrEmpty(otherComment) == false) - dic.Add(prop.Name, otherComment); + if (level == 0 && prop.DeclaringType.Assembly != entityType.Assembly) + { + var cbs = LocalGetComment(prop.DeclaringType, level + 1); + if (cbs != null && cbs.TryGetValue(prop.Name, out var otherComment) && string.IsNullOrEmpty(otherComment) == false) + dic.Add(prop.Name, otherComment); + } + continue; } - continue; - } - var comment = node.InnerXml.Trim(' ', '\r', '\n', '\t'); - if (string.IsNullOrEmpty(comment)) continue; + var comment = node.InnerXml.Trim(' ', '\r', '\n', '\t'); + if (string.IsNullOrEmpty(comment)) continue; - dic.Add(prop.Name, comment); + dic.Add(prop.Name, comment); + } } } return dic;