LINQ2SQL 与 MS SQL Server Compact 3.5 SP2:BadImageFormatException

Posted

技术标签:

【中文标题】LINQ2SQL 与 MS SQL Server Compact 3.5 SP2:BadImageFormatException【英文标题】:LINQ2SQL with MS SQL Server Compact 3.5 SP2: BadImageFormatException 【发布时间】:2012-02-10 10:20:29 【问题描述】:

我在使用 Ling2SQL 的 .sdf 数据库文件时遇到问题。我正在.NET 3.5 上使用 VS2010。到目前为止我做了什么:

    创建 sdf 文件并添加表格和数据(位于项目文件夹中)

    将 SQLMetal.exe 和 SqlMetal.exe.config 复制到项目文件夹并调用它:

    SQLMetal.exe database.sdf /dbml:DataOffline.dbml /namespace:CTcalc /pluralize
    

    将 dbml 文件添加到项目中(创建了 designer.cs)

    向 Designer.cs 添加新方法

    public DataOfflineDataContext() : 
            base(global::CTcalc.Properties.Settings.Default.databaseOfflineConnectionString, mappingSource)
    
        OnCreated();
    
    

    将连接字符串添加到设置文件(类型:连接字符串)

    Data Source=|DataDirectory|\database.sdf
    

    使用连接:

    using (DataOfflineDataContext dc = new DataOfflineDataContext())
                lProtFunc = (from c in dc.ProtectionFunctions select c).ToList();
    

在调试我的项目时,我收到一个 BadImageFormatException 错误,HRESULT: 0x8007000B

我不知道如何解决它。有什么帮助吗?

【问题讨论】:

BadImageFormatException 通常意味着 x64 与 x86 程序集的差异。你的机器的架构是什么?您是否在 IIS 中托管? 【参考方案1】:

您必须在 x64 系统上同时安装 x86 和 x64 运行时 - http://www.microsoft.com/download/en/details.aspx?id=5783

【讨论】:

【参考方案2】:

我的错是在我的项目中使用了错误的 .dll。

我用过

Program Files\Microsoft SQL Server Compact Edition\v3.5\Desktop\System.Data.SqlServerCe.dll

而不是

Program Files\Microsoft SQL Server Compact Edition\v3.5\Private\System.Data.SqlServerCe.dll

现在它正在工作!

【讨论】:

以上是关于LINQ2SQL 与 MS SQL Server Compact 3.5 SP2:BadImageFormatException的主要内容,如果未能解决你的问题,请参考以下文章

LINQ2SQL + PLINQO:如何处理这样的简单情况?

如何更新 linq2sql 模型?

LINQ2SQL 根据大 where 选择行

在两个索引表上使用组和连接进行单独 LINQ2SQL 选择与一个组合选择的性能

Apache NiFi 与 MS SQL Server 集成

LINQ2SQL 事务的性能