Dapper 彩虹 MissingMethodException

3
为什么会出现这个异常?虽然代码不完全相同,但很接近“演示”https://gist.github.com/1599013 异常信息:MissingMethodException
描述:
方法未找到:'System.Collections.Generic.IEnumerable1<System.Object> Dapper.SqlMapper.Query(System.Data.IDbConnection, System.String, System.Object, System.Data.IDbTransaction, Boolean, System.Nullable1, System.Nullable`1)'。
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using Dapper;
using System.Data.SqlClient;
using MySql.Data.MySqlClient;

namespace daconsole2
{
    class Program
    {
        class Product
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Description { get; set; }
            public DateTime? LastPurchase { get; set; }
        }

        // container with all the tables
        class MyDatabase : Database<MyDatabase>
        {
            public Table<Product> Products { get; set; }
        }
        //*/
        static void Main(string[] args)
        {
            var cnn = new MySqlConnection("uid=name;pwd=pw;Port=3306;database=test");
            cnn.Open();
            var db = MyDatabase.Init(cnn, commandTimeout: 2);
            //if(false)
            db.Execute(@"create table Products (
Id int primary key,
Name varchar(20),
Description TEXT,
LastPurchase datetime)");
            var productId = db.Products.Insert(new { Name = "Hello", Description = "Nothing" });
            //var db = cnn;
            Console.ReadKey();
        }
    }
}
1个回答

14

我们遇到了同样的问题,原来是解决方案中的一些项目引用了不同版本的Dapper。

例如,一个项目在“属性”窗口中显示v4.0.30319的运行时版本,而另一个项目的Dapper运行时版本为v2.0.50727(.NET 3.5)。

只要将它们全部设置为v2.0.50727版本,这个错误就消失了。

*需注意的是,它们都显示文件版本1.12.0.0,所以这不是可靠的区分方法。


非常感谢!这是正确的答案。我正在使用NuGet,在我的一个项目中我有Dapper 1.12.1,在另一个项目中我有Dapper 1.13。一旦两个项目都使用了1.13,一切都正常了。 - superlogical
1
如果您在两个项目中使用Dapper,其中一个是.NET 2.0,另一个是.NET 4.0,那么您也会遇到此错误。 - David Thielen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接