- 优化 TableInfo 元数据对 interface 实现类 IsVirtual 重写的判断(增加 IsFinal == false);

This commit is contained in:
28810 2020-03-16 12:17:53 +08:00
parent 0effad75e4
commit ec4b934f23
2 changed files with 14 additions and 4 deletions

View File

@ -116,10 +116,17 @@ namespace FreeSql.Tests
public string Name { get; set; } public string Name { get; set; }
} }
public interface EdiInterface
{
List<EdiItem> Children { get; set; }
}
[Table(Name = "EDI")] [Table(Name = "EDI")]
public class Edi public class Edi : EdiInterface
{ {
[Column(Name = "EDI_ID")] public long Id { get; set; } [Column(Name = "EDI_ID")] public long Id { get; set; }
public List<EdiItem> Children { get; set; }
} }
[Table(Name = "EDI_ITEM")] [Table(Name = "EDI_ITEM")]
public class EdiItem public class EdiItem
@ -131,6 +138,8 @@ namespace FreeSql.Tests
[Fact] [Fact]
public void Test03() public void Test03()
{ {
g.sqlite.Select<Edi>().ToList();
var itemId2 = 2; var itemId2 = 2;
var itemId = 1; var itemId = 1;
var edi = g.sqlite.Select<Edi>() var edi = g.sqlite.Select<Edi>()

View File

@ -84,10 +84,11 @@ namespace FreeSql.Internal
{ {
if (common.CodeFirst.IsLazyLoading) if (common.CodeFirst.IsLazyLoading)
{ {
var getIsVirtual = p.GetGetMethod()?.IsVirtual;// trytb.Type.GetMethod($"get_{p.Name}")?.IsVirtual; var getMethod = p.GetGetMethod();
var setIsVirtual = setMethod?.IsVirtual; var getIsVirtual = getMethod?.IsVirtual == true && getMethod?.IsFinal == false;// trytb.Type.GetMethod($"get_{p.Name}")?.IsVirtual;
var setIsVirtual = setMethod?.IsVirtual == true && setMethod?.IsFinal == false;
if (getIsVirtual == true || setIsVirtual == true) if (getIsVirtual == true || setIsVirtual == true)
propsLazy.Add(NaviteTuple.Create(p, getIsVirtual == true, setIsVirtual == true)); propsLazy.Add(NaviteTuple.Create(p, getIsVirtual, setIsVirtual));
} }
propsNavObjs.Add(p); propsNavObjs.Add(p);
continue; continue;