EntityFramework,代码优先解决方案。
我的'存储库'
public abstract class BaseEfDataRepository : DbContext
{
public IDbSet<Account> Accounts { get; set; }
}
Account
是
public virtual List<User> Users { get; private set; }
如何使用Linq-To-Entities将新User
添加到Account
,而无需加载整个Account
对象,或至少不加载整个{{1}从它设置。
我通常这样做:
Users
但是我注意到这会将整个集合加载到内存中,我想避免这种情况。
有可能吗?我有什么选择?我能想到:
在var account = context.Accounts.FirstOrDefault(acc => acc.Id == accountId);
account.Users.Add(newUser);
context.Save();
中公开Users
并从中添加用户。但这会给我带来所有其他问题。
还有其他选择吗?
答案 0 :(得分:1)
如果您知道Account
的id值,则可以创建存根实体并将User
添加到其Users
集合中:
var acc = new Account { Id = accountId };
context.Accounts.Attach(acc);
acc.Users.Add(newUser);
context.SaveChanges();
由于Account.Users
有一个私有的setter,我假设你在构造函数中初始化了这个集合。