这个问题在这里已有答案:
Net Core 2.0实体框架。当我尝试使用_context.UserTask.AddRange(userTasks)
插入数据时,TaskID
在调用SaveChanges()
后没有更新。下面是我正在使用的代码。
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,我的意思是你要通过使用Select函数来添加任务范围,而不是检查结果。我不明白的另一件事是在调用“SaveChanges”后,你正在循环一个不同的对象(通知对象VS 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());
}
我希望能帮助你。