是否有必要先查找实体以在保存之前填充另一个实体的导航 属性?
Is it necessary to lookup entity first to populate navigation property of another entity before saving it?
以前我是这样保存用户的:
context.User.Add(
new User
{
GroupId = groupId
});
await context.SaveChangesAsync()
但随后为群组引入了一个导航属性,所以现在这样保存它:
context.User.Add(
new User
{
Group = await db.Groups.FindAsync(groupId)
});
await context.SaveChangesAsync()
是否可以在保存父对象之前避免对每个导航 属性 进行数据库查找?像这样:
context.User.Add(
new User
{
Group = new Group { GroupId = groupId }
});
await context.SaveChangesAsync()
抛出实体验证异常:
Cannot insert the value NULL into column 'name', table 'Project.dbo.Groups'; column does not allow nulls. INSERT fails.
The statement has been terminated.
所以我想知道是否有任何解决方法
你应该可以保持原来的样子。
context.User.Add(
new User
{
GroupId = groupId
});
await context.SaveChangesAsync();
如果您单步执行原始代码,您会注意到导航 属性 在您保存更改后将可用(通过延迟加载)。
以前我是这样保存用户的:
context.User.Add(
new User
{
GroupId = groupId
});
await context.SaveChangesAsync()
但随后为群组引入了一个导航属性,所以现在这样保存它:
context.User.Add(
new User
{
Group = await db.Groups.FindAsync(groupId)
});
await context.SaveChangesAsync()
是否可以在保存父对象之前避免对每个导航 属性 进行数据库查找?像这样:
context.User.Add(
new User
{
Group = new Group { GroupId = groupId }
});
await context.SaveChangesAsync()
抛出实体验证异常:
Cannot insert the value NULL into column 'name', table 'Project.dbo.Groups'; column does not allow nulls. INSERT fails. The statement has been terminated.
所以我想知道是否有任何解决方法
你应该可以保持原来的样子。
context.User.Add(
new User
{
GroupId = groupId
});
await context.SaveChangesAsync();
如果您单步执行原始代码,您会注意到导航 属性 在您保存更改后将可用(通过延迟加载)。