Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF DbContext.BulkInsert:找到不明确的匹配项_C#_Asp.net Mvc_Entity Framework_Entity Framework 6_Bulkinsert - Fatal编程技术网

C# EF DbContext.BulkInsert:找到不明确的匹配项

C# EF DbContext.BulkInsert:找到不明确的匹配项,c#,asp.net-mvc,entity-framework,entity-framework-6,bulkinsert,C#,Asp.net Mvc,Entity Framework,Entity Framework 6,Bulkinsert,我正在处理EF扩展BulkInsert(MVC5,EF6)的奇怪问题 以下是我的代码结构: 我的数据库上下文继承自IdentityDbContext(我使用Owin) 实体接口 public interface IMyObject { Guid Id { get; set; } } 基本实体对象 public class MyObject: IMyObject { [Key] public Guid Id {

我正在处理EF扩展BulkInsert(MVC5,EF6)的奇怪问题

以下是我的代码结构: 我的数据库上下文继承自IdentityDbContext(我使用Owin) 实体接口

 public interface IMyObject
 {
    Guid Id { get; set; }
 }
基本实体对象

   public class MyObject: IMyObject
    {
        [Key]
        public Guid Id
        {
            get
            {
                if (_id == Guid.Empty)
                {
                    _id = Guid.NewGuid();
                }
                return _id;
            }
            set
            {
                _id = value;
            }
        }
        private Guid _id;
     public class Client : MyObject
    {
        [Required]
        [StringLength(255)]
        public string Name { get; set; }

        public string Town{get;set;}
....
    }
继承实体对象

   public class MyObject: IMyObject
    {
        [Key]
        public Guid Id
        {
            get
            {
                if (_id == Guid.Empty)
                {
                    _id = Guid.NewGuid();
                }
                return _id;
            }
            set
            {
                _id = value;
            }
        }
        private Guid _id;
     public class Client : MyObject
    {
        [Required]
        [StringLength(255)]
        public string Name { get; set; }

        public string Town{get;set;}
....
    }
我正在尝试使用BulkInsert将大量客户端对象插入数据库:

     private void InsertDataToDatabase<T>(ICollection<T> dbObjects) where T : class, IMyObject
            {
        MyContext.BulkInsert<T>(dbObjects, 5000);
//fails
    }
private void InsertDataToDatabase(ICollection dbObjects),其中T:class,IMyObject
{
MyContext.BulkInsert(dbObjects,5000);
//失败
}
但是,这种标准插入方法效果良好:

     private void InsertDataToDatabase<T>(ICollection<T> dbObjects) where T : class, IMyObject
                {
             foreach (var entity in dbObjects)
            {
                MyContext.Set<T>().Add(entity);
            }
            MyContext.SaveChanges();
            //works fine
        }
private void InsertDataToDatabase(ICollection dbObjects),其中T:class,IMyObject
{
foreach(dbObjects中的var实体)
{
MyContext.Set().Add(实体);
}
MyContext.SaveChanges();
//很好
}
BulkInsert中的例外是:

System.Reflection.AmbiguousMatchException:找到不明确的匹配。在 System.RuntimeType.GetPropertyImpl(字符串名称,BindingFlags bindingAttr,Binder Binder,类型returnType,类型[]类型, System.Type.GetProperty(字符串名称, BindingFlags(bindingAttr)位于 EntityFramework.MappingAPI.Extensions.TypeExtensions.GetProperty(类型 中的类型、字符串属性名称、字符分隔符) c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Extensions\TypeExtensions.cs:line 79在 EntityFramework.MappingAPI.Mappers.MapperBase.MapProperty(EntityMap entityMap、EdmProperty、Int32&i、字符串和前缀) c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappers\MapperBase.cs:line 488位于EntityFramework.MappingAPI.Mappers.MapperBase.MapEntity(字符串 输入完整名称,输入EdmType(项目) c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappers\MapperBase.cs:line 357位于EntityFramework.MappingAPI.Mappings.DbMapping..ctor(DbContext (上下文)在 c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappings\DbMapping.cs:line 82位于中的EntityFramework.MappingAPI.EfMap.Get(DbContext上下文) c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\EfMap.cs:line 60分 EntityFramework.MappingAPI.Extensions.MappingAPI Extensions.Db(DbContext ctx,类型)输入 c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Extensions\MappingApiExtensions.cs:line 51在 System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable
1
source,Func
2键选择器,Func
2元素选择器,
IEqualityComparer
1比较器)位于 EntityFramework.BulkInsert.Helpers.MappedDataReader
1..ctor(IEnumerable
1 可枚举,IEfBulkInsertProvider)中的 c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Helpers\MappedDataReader.cs:line 58 at EntityFramework.BulkInsert.Providers.EfSqlBulkInsertProviderWithMappedDataReader.Run[T](IEnumerable
1)
中的实体、SqlTransaction事务、BulkInsertOptions选项)
c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Providers\EfSqlBulkInsertProviderWithMappedDataReader.cs:line
22时
EntityFramework.BulkInsert.Providers.ProviderBase
2.Run[T](IEnumerable
1
中的实体、IDbTransaction事务、BulkInsertOptions选项)
c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Providers\ProviderBase.cs:line
77 at
EntityFramework.BulkInsert.Providers.ProviderBase
2.Run[T](IEnumerable
1
实体、BulkInsertOptions)中的
c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Providers\ProviderBase.cs:line
105 at
EntityFramework.BulkInsert.Extensions.BulkInsertExtension.BulkInsert[T](DbContext
上下文,IEnumerable
1实体,SqlBulkCopyOptions sqlBulkCopyOptions,可为空
1 batchSize)
c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Extensions\BulkInsertExtension.cs:line
95分
EntityFramework.BulkInsert.Extensions.BulkInsertExtension.BulkInsert[T](DbContext
上下文,IEnumerable
1个实体,可空
1个批大小)
c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Extensions\BulkInsertExtension.cs:line
75分
My.Portal.Controller.InstallController.InsertDataToDatabase[T](ICollection
1 对象)在 C:\xxxx\Controllers\InstallController.cs:line 581


请提供帮助。

这是打字错误:
InsertDataToDatabase(ICollection对象)
和您使用的函数内部
MyContext.BulkInsert(dbObjects,5000),objects参数和dbObjectshey,是,objects=dbobjects。修复了post.but错误,InsertDataToDatabase有两个参数,collection和guid,但您只提供了一个参数的声明。对不起,您能更具体一点吗?我不明白:(我明白你的意思,我修好了。不幸的是,这不是问题所在。只是忘了从日志中删除这个。