powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / множественный insert
6 сообщений из 6, страница 1 из 1
множественный insert
    #39211103
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в linq сущствует InsertAllOnSubmit.
Код: c#
1.
2.
3.
                    
db.tables.InsertAllOnSubmit(list);
db.SubmitChanges();


я думал он делает что-то вроде
Код: sql
1.
insert into tables(id, txt) VALUES (1, N'111 ', '20080923'), (2, N'222');


но в профайлере видно, что всё вставляется в цикле по одной записи.
Код: sql
1.
2.
insert into tables(id, txt) VALUES (1, N'111')
insert into tables(id, txt) VALUES (2, N'222')




Как можно вставить всё одним запросом?

---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6002: Service Pack 2) '
...
Рейтинг: 0 / 0
множественный insert
    #39211115
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann, Linq2Sql не поддерживает bulk inserts. Смотрите в сторону SqlBulkCopy.
...
Рейтинг: 0 / 0
множественный insert
    #39211117
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,
та я смотрел, хотелось узнать все варианты.
...
Рейтинг: 0 / 0
множественный insert
    #39211141
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
множественный insert
    #39211200
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да
...
Рейтинг: 0 / 0
множественный insert
    #39211505
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мож кому пригодится
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
        public void BulkInsertAll<T>(IEnumerable<T> entities)
        {
            entities = entities.ToArray();

            string cs = Connection.ConnectionString;
            var conn = new System.Data.SqlClient.SqlConnection(cs);
            
            conn.Open();

            Type t = typeof(T);

            var tableAttribute = (TableAttribute)t.GetCustomAttributes(
                typeof(TableAttribute), false).Single();
            var bulkCopy = new System.Data.SqlClient.SqlBulkCopy(conn)
            {
                DestinationTableName = tableAttribute.Name, BulkCopyTimeout=0
            };

            var properties = t.GetProperties().Where(EventTypeFilter).ToArray().Take(12);
            var table = new DataTable();

            foreach (var property in properties)
            {
                Type propertyType = property.PropertyType;
                if (propertyType.IsGenericType &&
                    propertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
                {
                    propertyType = Nullable.GetUnderlyingType(propertyType);
                }

                table.Columns.Add(new DataColumn(property.Name, propertyType));
            }

            foreach (var entity in entities)
            {
                table.Rows.Add(properties.Select(
                  property => GetPropertyValue(
                  property.GetValue(entity, null))).ToArray());
            }
             
            bulkCopy.WriteToServer(table);
            conn.Close();
        }
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / множественный insert
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]