【发布时间】:2017-01-21 16:59:24
【问题描述】:
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 对象,或者至少不加载整个 Users 对象集。
我通常这样做:
var account = context.Accounts.FirstOrDefault(acc => acc.Id == accountId);
account.Users.Add(newUser);
context.Save();
但我注意到这会将整个集合加载到内存中,我想避免这种情况。
有可能吗?我有哪些选择?我能想到:
在DbContext 中公开Users 并从那里添加用户。但这会给我带来所有其他类型的问题。
还有其他选择吗?
【问题讨论】:
-
您的上下文显然知道
User是一个映射类。我不明白添加IDbSet<User>会遇到什么问题。最简单的方法是添加用户并设置他们的AccountIds(如果他们有该属性)。 -
@GertArnold,首先,
AccountId属性有一个私有设置器,我希望它保持这种状态。
标签: c# entity-framework linq linq-to-sql linq-to-entities