servicestack,C#,Entity Framework,Linq,Mono,servicestack" /> servicestack,C#,Entity Framework,Linq,Mono,servicestack" />

C# 使用Linq时mono下的应用程序崩溃

C# 使用Linq时mono下的应用程序崩溃,c#,entity-framework,linq,mono,servicestack,C#,Entity Framework,Linq,Mono,servicestack,我正在使用ServiceStack和EF6(MySQL)编写RESTAPI。代码在windows下运行没有问题,servicestack本身在linux(HyperfastCGI4+Nginx)下运行良好。 但是,如果我调用使用EntityFramework的服务,我会得到一个NotSupportedException和一个我不太理解的堆栈跟踪。 我错过了什么吗 请求的结果: 我在entityframework源代码中找到了一个调用反射方法并返回IQueryable的方法,但是我不知道这是否与问

我正在使用ServiceStack和EF6(MySQL)编写RESTAPI。代码在windows下运行没有问题,servicestack本身在linux(HyperfastCGI4+Nginx)下运行良好。
但是,如果我调用使用EntityFramework的服务,我会得到一个
NotSupportedException
和一个我不太理解的堆栈跟踪。
我错过了什么吗

请求的结果:

我在entityframework源代码中找到了一个调用反射方法并返回
IQueryable
的方法,但是我不知道这是否与问题有关。至少它把我引向了正确的方向。
以下是实施方案:

/// <summary>
///     Creates an appropriate generic IQueryable using Reflection and the underlying ElementType of
///     the given ObjectQuery.
/// </summary>
private IQueryable CreateQuery(ObjectQuery objectQuery)
{
    var internalQuery = CreateInternalQuery(objectQuery);

    var genericDbQueryType = typeof(InternalDbQuery<>).MakeGenericType(internalQuery.ElementType);
    var constructor = genericDbQueryType.GetConstructors(BindingFlags.Instance | BindingFlags.Public).Single();
    return (IQueryable)constructor.Invoke(new object[] { internalQuery });
}
//
///使用反射和
///给定的ObjectQuery。
/// 
专用IQueryable CreateQuery(ObjectQuery ObjectQuery)
{
var internalQuery=CreateInternalQuery(objectQuery);
var genericDbQueryType=typeof(InternalDbQuery).MakeGenericType(internalQuery.ElementType);
var constructor=genericDbQueryType.GetConstructors(BindingFlags.Instance | BindingFlags.Public).Single();
return(IQueryable)构造函数。Invoke(新对象[]{internalQuery});
}

Linq会导致mono故障吗?如果是,有办法解决吗?

重新瞄准3.5解决了问题 Grrr

另外,
更新包-重新安装
是否为您重新安装所有NUGET

重新瞄准3.5解决了问题
Grrr

另外,
更新包-重新安装
是否为您重新安装所有Nuget

看起来这是Mono的一个限制:@Pawel非常感谢,这是一个开始。你知道我能做些什么来阻止EF调用这个方法吗?我所做的就是创建一个新的数据库上下文,
.Add()
.SaveChanges()
。堆栈跟踪
EntityProxyTypeInfo
中的这一点告诉我您可能正在使用代理。我将从禁用代理生成开始,看看它是否有帮助。@Pawel感谢您的方法,我添加了
dbContext.Configuration.ProxyCreationEnabled=false
dbContext.Configuration.LazyLoadingEnabled=false
但是我还是遇到了同样的错误然后我不知道:(看起来这是Mono的一个限制:@Pawel非常感谢,这是一个开始。你知道我可以做什么来阻止EF调用这个方法吗?我所做的就是创建一个新的DB上下文,
.Add()
.SaveChanges()
。堆栈跟踪
EntityProxyTypeInfo
中的这一点告诉我您可能正在使用代理。我将从禁用代理生成开始,看看是否有帮助。@Pawel感谢您的方法,我添加了
dbContext.Configuration.ProxyCreationEnabled=false;
dbContext.Configuration.LazyLoadingEnabled=false;
但是我仍然遇到同样的错误,我不知道:(
var userRow = modelContext.User.FirstOrDefault(user => user.Mail == mail);
/// <summary>
///     Creates an appropriate generic IQueryable using Reflection and the underlying ElementType of
///     the given ObjectQuery.
/// </summary>
private IQueryable CreateQuery(ObjectQuery objectQuery)
{
    var internalQuery = CreateInternalQuery(objectQuery);

    var genericDbQueryType = typeof(InternalDbQuery<>).MakeGenericType(internalQuery.ElementType);
    var constructor = genericDbQueryType.GetConstructors(BindingFlags.Instance | BindingFlags.Public).Single();
    return (IQueryable)constructor.Invoke(new object[] { internalQuery });
}