Могу ли я заставить Entity Framework работать только с частью таблицы? - PullRequest
1 голос
/ 29 сентября 2011

Мне нужно подключиться к существующей таблице базы данных и разрешить пользователям обновлять несколько столбцов.Дело в том, что эта таблица базы данных является частью нашего стороннего программного обеспечения и содержит более 150 столбцов, и мне нужно получить доступ только к 5 из них.

Есть ли способ, без использования представлений, получить Entity Frameworkвыбрать и обновить только несколько столбцов?

Полагаю, я мог бы раскрыть всю запись, но у меня также есть вторая таблица, к которой нужно подключиться, и я хотел разбить эту таблицу на несколько объектов,потому что наш поставщик программного обеспечения, в своей бесконечной мудрости, решил поместить несколько несвязанных битов информации в одну таблицу.

Ответы [ 4 ]

4 голосов
/ 30 сентября 2011

Указанные выше параметры будут работать, но есть более простое решение, которое не требует ни новой схемы БД, ни изменения вашей модели.

Чтобы выбрать только несколько столбцов, просто project :

var smallResultSet = from b in Context.BigHonkinTable
                     where b.Id == someId
                     select new
                     {
                         This = b.This,
                         That = b.That
                     };

Проверьте сгенерированный SQL.

Для обновления используйте заглушку :

var stub = new BigHonkinEntitiy { Id = someId };
Context.AttachTo("BigHonkinTable", stub);
// important: Mutate stub *after* attaching
stub.This = "Something else";
Context.SaveChanges();
3 голосов
/ 29 сентября 2011

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

2 голосов
/ 30 сентября 2011

В Entity Framework есть функция под названием Table Splitting.Я нашел шаги здесь: Разделение таблицы в Entity Framework

Вы можете разделить две сущности в вашей модели EF, чтобы одна сущность имела только 5 нужных вам столбцов.Я пробовал это раньше, чтобы избежать извлечения всех данных из таблицы.

2 голосов
/ 29 сентября 2011

Вид будет лучшим решением здесь. Хотя возможно создать класс, а затем удалить 147 свойств и оставить те, которые вам действительно нужны. Помните, что вам нужно сохранить первичный ключ во всех классах! Кроме того, вставки могут не работать из-за того, что некоторые из пропущенных столбцов могут не разрешать пустые значения, что приведет к исключению sql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...