.net core 添加范围后未加载实体框架核心默认值
Net核心2.0实体框架。当我尝试使用.net core 添加范围后未加载实体框架核心默认值,.net-core,entity-framework-core,.net Core,Entity Framework Core,Net核心2.0实体框架。当我尝试使用\u context.UserTask.AddRange(userTasks)插入数据时,调用SaveChanges()后,TaskID不会被更新。下面是我正在使用的代码 public partial class UserTask { public Guid TaskID { get; set; } public string Text{get;set;} } var tasks = taskTexts.Select(s => new
\u context.UserTask.AddRange(userTasks)
插入数据时,调用SaveChanges()
后,TaskID
不会被更新。下面是我正在使用的代码
public partial class UserTask
{
public Guid TaskID { get; set; }
public string Text{get;set;}
}
var tasks = taskTexts.Select(s => new UserTask { Text="abc" });
_context.UserTask.AddRange(tasks);
await _context.SaveChangesAsync();
foreach(var n in notifications){
n.TaskID //This is not returning the actualID inserted on the DB
}
以下是表格结构
CREATE TABLE dbo.Task(
TaskID [uniqueidentifier] NOT NULL,
[Text] [varchar](200) NOT NULL
CONSTRAINT [PK_TaskID] PRIMARY KEY CLUSTERED
(
TaskID ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE dbo.Task ADD CONSTRAINT [DF_TaskID] DEFAULT (newsequentialid())
FOR [TaskID]
GO
您确定要添加新的UserTask吗?我的意思是,您正在使用选择函数获取要添加的任务范围,并且您没有检查结果。 另一件我不明白的事情是,在调用“SaveChanges”之后,您正在一个不同的对象(通知对象与userTask对象)上循环,可能是那里出了什么问题 试着这样做:
List<UserTask> listToAdd = new List<UserTask>().Add(new UserTask { Text = "NewUserTaskForTest" });
_context.UserTask.AddRange(tasks);
await _context.SaveChangesAsync();
foreach (var userTask in _context.UserTask)
{
userTask.TaskID;
Console.WriteLine(userTask.TaskID.ToString());
}
List listToAdd=new List().Add(new UserTask{Text=“NewUserTaskForTest”});
_context.UserTask.AddRange(任务);
wait_context.SaveChangesAsync();
foreach(var userTask在_context.userTask中)
{
userTask.TaskID;
WriteLine(userTask.TaskID.ToString());
}
我希望能帮助您。通知从哪里来?你说的值没有更新是什么意思?对不起,这不是通知,这是tasksvalue没有更新意味着,在savechangessync之后,如果我尝试在foreach循环中获取TaskID,该值与DB不同,它只是0000-0000…我得到了解决方案。问题与查找其工作的原因相同,并添加为答案谢谢。我错误地把通知放在那里,我得到了问题。这里解释了修复方法