Прошло много времени с тех пор, как я копался в деревьях выражений и борюсь со следующей проблемой.
В основном я хочу взять следующее Expression<Func<T, TIdType>>
:
(a) => EF.Property<TIdType>(a, "TenantId")
и расширите его, чтобы оно стало Expression<Func<T, bool>
:
(a) => EF.Property<TIdType>(a, "TenantId").Equals(TenantId)
Так что в основном я хочу взять оригинальное выражение и добавить .Equals(TenantId)
Что касается общей информации об этой проблеме, то все это из-за того, что я пытался обойти проблему в EF Core 2.0, как было сказано здесь:
https://github.com/aspnet/EntityFrameworkCore/issues/11456
Следующее, надеюсь, показывает, что я пытаюсь более подробно:
public class FooEntity
{
public Guid TenantId { get; set; }
}
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var adaptor = new TenantFilterExpressionAdaptor<FooEntity, Guid>();
var tenantIdFilter = adaptor.Adapt((a) => EF.Property<Guid>(a, "TenantId"));
}
}
public class TenantFilterExpressionAdaptor<T, TIdType>
{
public TIdType TenantId { get; set; }
public Expression<Func<T, bool>> Adapt(Expression<Func<T, TIdType>> idExpression)
{
// Tack on .Equals(TenantId) to the expression!?
// assume I have to add nodes to the body?
// idExpression.Body?
}
}