1

我最近开始使用 Visual Studio 2010。我已经从旧的 2008 年升级了我的解决方案。在此之后,我尝试运行我的项目,这是一个非常简单的数据库搜索引擎,使用 linq 命令并且它工作正常。然后我切换到 .NET 4,从那以后我就死在水里了。任何 linq 查询都不会执行,也不会引发任何异常。当我在执行 linq 命令时暂停时,它会冻结在 DataContext.GetTable() 方法上。我能想到的只是一些兼容性问题,但我无法弄清楚问题到底是什么。

我的 Linq 命令是典型的“选择 *”:

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>
4

2 回答 2

0

我认为您有Linq命名空间问题,只需做一件事

Go to [project name] -> References -> Add reference -> System.Data.Linq 

通过添加System.Data.Linq命名空间Add references

希望它能解决你的问题

于 2013-05-20T09:27:24.510 回答
0

毕竟,问题出在用于构建单个项目的不同版本的 .NET 中。如果没有没有useLegacyV2RuntimeActivationPolicy="true"属性的文件,上面的 app.config 文件就可以工作。我不得不手动添加它,现在它完美无缺。

于 2013-05-21T07:42:03.577 回答