mhlongosbusiso Ответов: 2

Здравствуйте, как переместить активную таблицу в архив с помощью entity framework? Это вообще практично?


Я новичок в этом деле. ASP.NET разработка MVC и один из проектов, над которыми я работаю, требуют, чтобы после захвата данных таблица была перемещена в другое представление (архивирована), а затем индекс должен быть очищен, чтобы можно было захватить новые данные.

Что я уже пробовал:

Я собираюсь быть полностью честным, говоря, что я провел последнюю неделю, пытаясь найти полезные ссылки в Google, но это не очень хорошо сработало для меня.

F-ES Sitecore

Выполнение массовых операций на самом деле не является тем, для чего предназначен EF, вы, вероятно, найдете его невероятно медленным. Для таких задач лучше использовать хранимые процедуры.

mhlongosbusiso

Привет и спасибо за ответ,
I have gotten around to working with stored procedures and I am getting the required result - on the MS SQL side. It is only when I try to access my stored procedure result from the ASP.NET MVC web application upon running it that I get an error and I understand the reason that I am getting the error I just got stuck trying to fix it. I want to select only specific columns from my original database table but for some reason my model - on the MVC side - expects me to select all the columns from the original table. The error is that there's a mismatch of columns. Is there a way I can pass only the selected columns onto my MVC application without getting the error?

Заранее благодарю вас.

F-ES Sitecore

Когда вы добавляете ссылку на сохраненный proc в конструкторе EF, он должен создать для вас возвращаемый объект с правильными столбцами. Если это не работает для вас, вы можете указать свой собственный класс, который будет использоваться в качестве возвращаемого типа, и убедиться, что у него есть правильные вещи.

https://www.entityframeworktutorial.net/stored-procedure-in-entity-framework.aspx

Dave Kreskowiak

Просто потому, что вы используете Entity Framework для своих обычных операций с базой данных, это не означает, что вы должны использовать EF для всего в базе данных.

Вы не можете использовать EF, чтобы делать то, что вы хотите. Вы должны выполнить обычные инструкции SQL, чтобы "переместить" таблицу или любые другие ваши требования к "архивированию" и сбросить значения идентификаторов.

Как сказал F-ES, вам было бы гораздо лучше сделать эту операцию архивирования в хранимой процедуре в базе данных и обернуть все это в транзакцию, чтобы убедиться, что это либо произойдет, либо ничего из этого не произойдет, если что-то пойдет не так.

2 Ответов

Рейтинг:
2

mhlongosbusiso

Добрый день всем,

After spending a lot of time trying to understand how stored procedures work, I am now able to get the desired results from the stored procedure and onto my ASP.NET application. There is just one little issue, though, it's actually a new question more than an issue - I understand that I can have more than one SELECT statements within the same stored procedure and I have played around with that functionality (on MSSQL) and the result came back as expected but now - when I call my stored procedure onto the ASP.NET application it seems to fetch only the result of the first select statement and just ignores the other. Both my SELECT statements get data from the same table and just manipulate it differently, now what I want is to display the results from both my SELECT statements on the same view. Is this is even practical? If so, I would appreciate pointers and if not I'd be happy to know and then that way I can perhaps start looking for new ways of achieving my goal.

Заранее благодарю вас,
S'busiso


Рейтинг:
1

Gerry Schmitz

Тот же тип сущности, просто еще один "экземпляр" этой таблицы / записи ("архив").

(Обычно вы архивируете "запись" или записи, а не всю таблицу).

Создайте контекст данных "производство" и "архив" и "переместите" данные между ними (одновременно "усекая" производственную таблицу(ы) для следующей итерации).

Неизбежно, кто-то хочет "восстановить" архив (в производство) по какой-то причине.

Я бы предложил в качестве дополнительного шага раздельное производство и архивирование "баз данных" (помимо отдельных контекстов данных); таким образом, вы "сохраняете все имена одинаковыми".