.net core 添加范围后未加载实体框架核心默认值

.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

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 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…我得到了解决方案。问题与查找其工作的原因相同,并添加为答案谢谢。我错误地把通知放在那里,我得到了问题。这里解释了修复方法