我有一个问题,我希望你能解释我的解决方案!
我想在两个动态类之间进行左外连接。我在运行时生成两个类并将其配置添加到 entityContext 中:
public DbModelBuilder AddEntityConfiguration<T>(string className, List<ColumnMetadata> columns, DbModelBuilder builder) where T : class
{
var configuration = (EntityTypeConfiguration<T>)Activator.CreateInstance(typeof(DynamicViewConfiguration<>).MakeGenericType(typeof(T)), className, columns);
builder.Configurations.Add(configuration);
return builder;
}
在此之后我调用 GetDynamicQueryResults (为此使用调用):
public IQueryable<T> GetDynamicQueryResults<T>(string className, List<ColumnMetadata> columns, DbModelBuilder builder, ref MainContext context) where T : class
{
return context.GetDynamicQueryResults<T>(className);
}
在 Vm 中我这样写:
var specificGeneric = typeof (IQueryCatalogDynamic).GetMethod("GetDynamicQueryResults").MakeGenericMethod(dynamicClass.GetType());
var specifications = specificGeneric.Invoke(repository,new object[] { dynamicClass.GetType().Name, _fields, builder, context });
var cfosGeneric = typeof (IQueryCatalogDynamic).GetMethod("GetDynamicQueryResults").MakeGenericMethod(dynamicClass2.GetType());
var cfos = cfosGeneric.Invoke(repository,new object[] {dynamicClass2.GetType().Name, _fields, builder, context});
有用。想要在规范和 cfos 之间进行左外连接。我找到了解决方案:如何使用 Dynamic Linq 进行左外连接?
但是如何将 DefaultIfEmpty() 添加到接口 IEnumerableSignatures?现在我有例外:
System.Linq.Dynamic.dll 中出现“System.Linq.Dynamic.ParseException”类型的异常,但未在用户代码中处理
附加信息:不存在适用的聚合方法“DefaultIfEmpty”
我希望有人知道解决方案。