EntityFramework, первое решение кода.Как добавить элемент в репозиторий без загрузки родительских и дочерних элементов элемента в память
Мой 'вместилище'
public abstract class BaseEfDataRepository : DbContext
{
public IDbSet<Account> Accounts { get; set; }
}
Account
является
public virtual List<User> Users { get; private set; }
Как я могу добавить новый User
к Account
, используя Linq-To-Entities, без загрузки всего Account
объекта, или по крайней мере, без загрузки всего набора Users
.
Я обычно делаю это так:
var account = context.Accounts.FirstOrDefault(acc => acc.Id == accountId);
account.Users.Add(newUser);
context.Save();
, но я заметил, что это загружает весь набор в память, которую я хочу, чтобы избежать.
Возможно ли это? Какие у меня варианты? Я могу думать: Экспозиция Users
в DbContext
и добавьте пользователя оттуда. Но это вызовет для меня все другие проблемы.
Любые другие варианты?
Ваш контекст, очевидно, знает 'User' как отображаемый класс. Я не понимаю, с какими * проблемами * вы столкнулись, добавив к нему IDbSet. Самый простой способ - добавить пользователей и установить их 'AccountId', если у них есть это свойство. –
@GertArnold, ну, например, свойство 'AccountId' имеет частный сеттер, и я хочу, чтобы он остался таким. –