Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ и Удаление, но без [Key] / 8 сообщений из 8, страница 1 из 1
14.11.2015, 13:16
    #39103417
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и Удаление, но без [Key]
Модель:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    [Table("DirDiscountTab")]
    public class DirDiscountTab
    {
        [Display(Name = "Скидка")]
        [Required]
        public int DirDiscountID { get; set; }
        [ForeignKey("DirDiscountID")]
        public virtual Dir.DirDiscount dirDiscount { get; set; }

        [Required]
        public decimal SumBegin { get; set; }
        [Required]
        public decimal Discount { get; set; }
    }


Подскажите, как можно удалить записи, при условии без поля [Key]?
Пример:
Код: sql
1.
2.
DELETE FROM DirDiscountTab 
WHERE DirDiscountID=@DirDiscountID



А то так не работает:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
                //Получаем коллекцию записей
                var query =
                    (
                    from dirDiscountTabs in db.DirDiscountTabs
                    where dirDiscountTabs.DirDiscountID == dirDiscount.DirDiscountID
                    select dirDiscountTabs
                    ).ToList();

                //Удаляем каждую запись отдельно
                foreach (var dirDiscountTab in query)
                {
                    try
                    {
                        db.Entry(dirDiscountTab).State = EntityState.Deleted;
                        db.SaveChanges();
                    }
                    catch (Exception ex) { ... }
                }



Заранее спасибо!
...
Рейтинг: 0 / 0
14.11.2015, 13:54
    #39103431
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и Удаление, но без [Key]
Та EF даже не сохраняет без поля [Key] ...
...
Рейтинг: 0 / 0
14.11.2015, 15:41
    #39103485
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и Удаление, но без [Key]
potkinТа EF даже не сохраняет без поля [Key] ...

И выводы?
...
Рейтинг: 0 / 0
14.11.2015, 18:20
    #39103577
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и Удаление, но без [Key]
potkinТа EF даже не сохраняет без поля [Key] ...

а как ему записи идентифицировать без ключа?
...
Рейтинг: 0 / 0
15.11.2015, 09:34
    #39103711
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и Удаление, но без [Key]
potkinПодскажите, как можно удалить записи, при условии без поля [Key]?
Пример:
Код: sql
1.
2.
DELETE FROM DirDiscountTab 
WHERE DirDiscountID=@DirDiscountID

EF так не умеет. Нужно зачитать удаляемые записи в кэш, пометить их удалёнными, потом вызвать SaveChanges. Если удаляемых записей много, то EF для их удаления лучше не использовать.
...
Рейтинг: 0 / 0
15.11.2015, 17:59
    #39103870
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и Удаление, но без [Key]
Алексей К Если удаляемых записей много, то EF для их удаления лучше не использовать.

Лучше использовать EF Extensions
...
Рейтинг: 0 / 0
18.11.2015, 01:38
    #39106112
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и Удаление, но без [Key]
Добавил поле [Кей]
...
Рейтинг: 0 / 0
24.11.2015, 11:24
    #39111863
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и Удаление, но без [Key]
Можно так.
Код: c#
1.
2.
3.
context.Database.ExecuteSqlCommand( 
        "DELETE FROM DirDiscountTab 
WHERE DirDiscountID=@DirDiscountID", DirDiscountID); 
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ и Удаление, но без [Key] / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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