添加范围后,实体框架核心默认值未加载[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

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
.net-core entity-framework-core
1个回答
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());
        }

我希望能帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.