升级到VS 2010和.NET 4.0后,LINQ停止工作

时间:2013-05-20 08:42:27

标签: c# visual-studio-2010 linq sql-server-2008 freeze

我最近开始使用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>

2 个答案:

答案 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文件就可以工作了。我不得不手动添加它,现在它完美无缺。