我最近开始使用Visual Studio 2010。我已经从2008年升级了我的解决方案。之后我尝试运行我的项目,这是一个非常简单的数据库搜索引擎,使用linq命令,它工作。然后我切换到.NET 4,从那时起我就死在了水中。任何linq查询都不会执行,也不会抛出任何异常。当我在执行linq命令时暂停时,它会在DataContext.GetTable()方法上冻结。所有我能想到的都是一些兼容性问题,但我无法弄清楚究竟是什么问题。
我的Linq命令是典型的“select *”:
var query = from mateInfo in context.TableMateInfos
select mateInfo;
我正在使用SQL Server 2008.我没有任何线索,为什么命令执行应该在升级到.NET 4后停止工作,特别是因为我仍然能够连接到数据库。当我在Management studio中打开数据库时,SQL命令(从TableMateInfo中选择*)可以正常工作并返回我想要的数据。有没有人有任何想法,被埋葬的狗可能会讨好吗?
修改
我已经通过'exe文件运行了我的应用程序,在抛出异常之后:
System.IO.FileLoadException: Mixed mode assembly is built against version 'v1.1.4322' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
at System.Signature.GetSignature(SignatureStruct& signature, Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
at System.Signature..ctor(IRuntimeFieldInfo fieldHandle, RuntimeType declaringType)
at System.Reflection.RtFieldInfo.get_FieldType()
at System.Data.Linq.SqlClient.TypeSystem.GetMemberType(MemberInfo mi)
at System.Data.Linq.Mapping.AttributedMetaDataMember..ctor(AttributedMetaType metaType, MemberInfo mi, Int32 ordinal)
at System.Data.Linq.Mapping.AttributedMetaType.InitDataMembers()
at System.Data.Linq.Mapping.AttributedMetaType..ctor(MetaModel model, MetaTable table, Type type, MetaType inheritanceRoot)
at System.Data.Linq.Mapping.AttributedRootType..ctor(AttributedMetaModel model, AttributedMetaTable table, Type type)
at System.Data.Linq.Mapping.AttributedMetaTable..ctor(AttributedMetaModel model, TableAttribute attr, Type rowType)
at System.Data.Linq.Mapping.AttributedMetaModel.GetTableNoLocks(Type rowType)
at System.Data.Linq.Mapping.AttributedMetaModel.GetTable(Type rowType)
at System.Data.Linq.DataContext.GetTable[TEntity]()
我已将包含以下内容的app.config文件添加到exe文件和所有库所在的相同位置。我仍然得到上面的错误。
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
答案 0 :(得分:0)
我认为你有Linq
命名空间问题,只做一件事
Go to [project name] -> References -> Add reference -> System.Data.Linq
按System.Data.Linq
添加Add references
命名空间。
希望它能解决你的问题
答案 1 :(得分:0)
问题在于用于构建单个项目的.NET的不同版本。如果没有useLegacyV2RuntimeActivationPolicy="true"
属性,那么上面的app.config文件就可以工作了。我不得不手动添加它,现在它完美无缺。