【发布时间】:2019-05-25 18:59:55
【问题描述】:
我有以下型号:
public partial class User
{
// other properties
/// <summary>
/// Gets or sets user roles
/// </summary>
public virtual IList<UserRole> UserRoles
{
get => _userRoles ?? (_userRoles = UserUserRoleMappings.Select(mapping => mapping.UserRole).ToList());
}
/// <summary>
/// Gets or sets user-user role mappings
/// </summary>
public virtual ICollection<UserUserRoleMapping> UserUserRoleMappings
{
get => _userUserRoleMappings ?? (_userUserRoleMappings = new List<UserUserRoleMapping>());
protected set => _userUserRoleMappings = value;
}
}
在另一个图书馆的服务方法:
public virtual User GetUserByUsername(string username)
{
if (string.IsNullOrWhiteSpace(username))
return null;
var user = _dbContext.Users
.Where(u => u.Username == username)
.FirstOrDefault();
return user;
}
只有启用延迟加载才能正常工作:
services.AddDbContext<DataContext>(options => options
.UseLazyLoadingProxies()
.UseSqlServer(connString));
如果未启用延迟加载,则未填充用户属性。
如果有人尝试在未启用延迟加载的情况下使用我的服务,我想抛出一个异常。怎么做?我试图检查属性_dbContext.ChangeTracker.LazyLoadingEnabled,但是这个属性总是正确的,即使我没有启用延迟加载...
【问题讨论】:
标签: c# entity-framework-core lazy-loading entity-framework-core-2.1