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

时间:2018-08-31 14:52:17

标签: .net-core entity-framework-core

Net Core 2.0实体框架。当我尝试使用_context.UserTask.AddRange(userTasks)插入数据时,调用TaskIDSaveChanges()不会被更新。下面是我正在使用的代码。

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

1 个答案:

答案 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());
        }

希望对您有所帮助。