DbContext 无法从数据库正确加载数据
DbContext doesn't load data properly from database
我有一个 .NET 应用程序,用户可以在其中 create/edit 他们的过滤器和第二个控制台应用程序,它作为后台任务运行并应用他们的过滤器。
我扩展了 Application
使用 class:
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
Filters = new List<FilterData>();
}
[SqlDefaultValue(DefaultValue = 0)]
public long Credit { get; set; }
public virtual ICollection<FilterData> Filters { get; set; }
}
我的控制台应用程序创建了一个 DbContext
并尝试使用 Filters
属性:
static void Main(string[] args)
{
var contextOptions = new DbContextOptionsBuilder<ApplicationDbContextEx>()
.UseSqlServer(@"connection string....")
.Options;
ApplicationDbContextEx context = new ApplicationDbContextEx(contextOptions);
foreach (var user in context.Users.ToList())
{
// Filters
Debug.Assert(user.Filters != null, "weird because we have filters in db");
}
}
我的问题是 user.Filters
始终为空,即使数据库中存在有效过滤器也是如此。
我猜这是 DbContext 创建的问题。
感谢帮助!
您是否使用约定、属性或 FluentAPI 定义了关系?尝试使用 Include
:
foreach (var user in context.Users.Include(a => a.Filters).ToList())
{
}
我有一个 .NET 应用程序,用户可以在其中 create/edit 他们的过滤器和第二个控制台应用程序,它作为后台任务运行并应用他们的过滤器。
我扩展了 Application
使用 class:
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
Filters = new List<FilterData>();
}
[SqlDefaultValue(DefaultValue = 0)]
public long Credit { get; set; }
public virtual ICollection<FilterData> Filters { get; set; }
}
我的控制台应用程序创建了一个 DbContext
并尝试使用 Filters
属性:
static void Main(string[] args)
{
var contextOptions = new DbContextOptionsBuilder<ApplicationDbContextEx>()
.UseSqlServer(@"connection string....")
.Options;
ApplicationDbContextEx context = new ApplicationDbContextEx(contextOptions);
foreach (var user in context.Users.ToList())
{
// Filters
Debug.Assert(user.Filters != null, "weird because we have filters in db");
}
}
我的问题是 user.Filters
始终为空,即使数据库中存在有效过滤器也是如此。
我猜这是 DbContext 创建的问题。
感谢帮助!
您是否使用约定、属性或 FluentAPI 定义了关系?尝试使用 Include
:
foreach (var user in context.Users.Include(a => a.Filters).ToList())
{
}