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;