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
答案 0 :(得分:1)
确定要添加一个新的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());
}
希望对您有所帮助。