项目用到linq entityframework,在测试VS中正常,但是整合到其他项目中的时候,凡是查询数据的地方全都弹出“linq to entities 不支持指定的类型成员”的提示。在线急等!
至少应该贴点代码啊~~
整合项目是不支持.net 4.0的 ,但是EF自动生成的特性里有4.0的参数,有没有可能是这个原因?
@一羽赐命: 这个4.0应该是EF的版本,而不是Net Framework的版本吧。贴下你的查询语句呢?
@幻天芒:
var q = from m in BLLFactory.memberDetailsBLL.LoadEntities(u => true)
select new
{
m.office,
};
@一羽赐命: 你这个office的数据类型是啥?
@幻天芒: string类型,不是类型原因,bool类型都会报错。凡是访问数据库的地方都会报这样的错误
@一羽赐命:
你修改为BLLFactory.memberDetailsBLL.Select(x=>x.office).ToList()试下。
确定EF对象上下文Context 有把整合后的对象都添加进去了,另外最好贴出代码抛异常的信息
System.NotSupportedException: LINQ to Entities 不支持指定的类型成员“office”。只支持初始值设定项、实体成员和实体导航属性。
在 System.Data.Objects.ELinq.ExpressionConverter.MemberAccessTranslator.TypedTranslate(ExpressionConverter parent, MemberExpression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.NewTranslator.TypedTranslate(ExpressionConverter parent, NewExpression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.UnarySequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.Convert()
在 System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
在 System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
在 System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
在 Union.UI.FrmAdmin.tbInformation_Selected(Object sender, TabControlEventArgs e)
在 System.Windows.Forms.TabControl.OnSelected(TabControlEventArgs e)
在 System.Windows.Forms.TabControl.WmSelChange()
在 System.Windows.Forms.TabControl.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
@一羽赐命:
我觉得是你把项目整合后,没有把所有实体整合到一个EF Context中所以 用Context在查询并不能识别这些新的实体
看你的实体是否在上下文(Context)中,你测试项目和整合项目有啥不一样总看得出来吧
反编译看了下,测试项目的dll都在整合项目里了。
首先 删除所有的报错的 entityframework.dll的引用
然后 package Manager Console
运行 install-package entityframework -version (版本号)
最后在看 是否引用了 相关dll的 model层的dll
是json.版本问题 4.X的 可以用 我升级成6.X 就报这个错
楼主,你这个问题最后是怎么解决的呢?
没有解决.