无法使用 EF Core 在 ASP.NET Core 中创建相关实体

web80

我在 Entity Framework Core 2.0 中创建相关实体时遇到问题。我刚刚创建了解决方案,包括一个 Asp.Net Core 后端项目和一个充当客户端的 UWP 项目。两种解决方案共享模型。这两个模型是:

public class UnitOfWork {
    public int UnitOfWorkId { get; set; }
    public string Name { get; set; }
    public Human Human { get; set; }
}

public class Human {
    public int HumanId { get; set; }
    public string Name { get; set; }
    public List<UnitOfWork> WorkDone { get; set; }
}

如您所见,模型非常简单。一个human有很多units of work顺便说一下,后端连接到 Azure SQL 数据库。我看过迁移类,而且数据库模式对我来说看起来不错。

我遇到的问题是,当我想使用 HTTP创建unit of work引用现有的human. 控制器相当简单:

[HttpPost]
public UnitOfWork Post([FromBody] UnitOfWork unitOfWork) {
    using (var db = new DatabaseContext()) {
        db.UnitsOfWork.Add(unitOfWork);
        var count = db.SaveChanges();
        Console.WriteLine("{0} records saved to database", count);
    }
    return unitOfWork;
}

再一次,这里没什么特别的。

如何创建工作单元并将其分配给现有人员?如果我和现有的人一起尝试,以这种方式

var humans = await Api.GetHumans();
var firstHuman = humans.First();

var unitOfWorkToCreate = new UnitOfWork() {
    Name = TbInput.Text,
    Human = firstHuman,
};

我收到此错误:

当 IDENTITY_INSERT 设置为 OFF 时,无法为表 'Humans' 中的标识列插入显式值

我觉得将 IDENTITY_INSERT 设置为 ON 会解决我的问题,但这不是我想要做的。在客户端中,我将选择一个现有的human,写下 的名称unit of work,然后创建后者。这是正确的方法吗?

编辑:按照@Ivan Stoev 的回答,我已经更新了UnitOfWork控制器以附加unitofwork.Human. 这导致

Newtonsoft.Json.JsonSerializationException: '反序列化数组时意外结束。路径“human.workDone”,第 1 行,位置 86。

调查 - 在这里看到- EFCore 期望human.WorkDone在构造函数中创建集合(如),所以我做到了,并且不再反序列化空值。但是,现在我有一个自引用循环:

Newtonsoft.Json.JsonSerializationException:检测到类型为“PlainWorkTracker.Models.UnitOfWork”的自引用循环。路径“human.workDone”。

有任何想法吗?谢谢!

伊万·斯托耶夫

有问题的操作属于保存断开连接的实体类别。

Add方法将图中当前未跟踪的所有实体标记为 new ( Added),然后SaveChanges尝试将它们插入数据库中。

您需要一种方法来告诉 EF 这unitOfWork.Human是一个现有实体。实现这一点的最简单方法是在调用之前Attach将它(将其标记为Unchanged,即存在)到上下文Add

db.Attach(unitOfWork.Human);
db.Add(unitOfWork);
// ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在ASP.NET Core WebApplicationFactory中重写EF Core DbContext

来自分类Dev

具有在SingleView中创建的实体列表的Asp.Net Core MVC EF模型

来自分类Dev

ASP.NET CORE 1.0存储库加载相关数据EF CORE

来自分类Dev

如何使用EF Core 3.1.5解决ASP.net Core应用程序中的空引用异常?

来自分类Dev

如何使用EF Core更新ASP.NET 5中的dbcontext脚手架?

来自分类Dev

在ASP.NET Core MVC中创建实体列表

来自分类Dev

无法使用EF Core 1.1创建迁移

来自分类Dev

ASP.NET Core MVC 和 EF Core 1.1

来自分类Dev

ASP.NET Core 和 EF Core 1.1 - 使用存储过程显示数据

来自分类Dev

使用EF .NET CORE删除所有相关行给用户

来自分类Dev

在EF Core和ASP.NET Core中处理并发的最佳实践?

来自分类Dev

Asp.Net Core中的EF Core异步可伸缩性

来自分类Dev

在没有 EF Core 参考的 ASP.NET 项目中使用 EF 存储?

来自分类Dev

使用Include加载相关数据实体ef Core 3.1

来自分类Dev

相关实体的过滤器值(asp.net core)

来自分类Dev

在.net core MVC中同时创建实体,关系和相关实体

来自分类Dev

ASP.NET Core - 无法跟踪实体类型的实例

来自分类Dev

在ASP.NET Core中使用FV和EF时获取“无法访问已处置的对象”

来自分类Dev

在ASP.NET Core中使用FV和EF时获取“无法访问已处置的对象”

来自分类Dev

无法在 ASP.NET Core 代码优先 EF 模型中将 Id 设置为主键

来自分类Dev

如何在asp.net core和ef7中的并行方法中使用注入的DbContext?

来自分类Dev

无法使用 EF Core 迁移

来自分类Dev

使用 EF Core Code First 和 IdentityUser 的 .Net Core API

来自分类Dev

具有Identity和ASP.NET Core RC2的实体框架Core无法在数据库中创建用户

来自分类Dev

具有Identity和ASP.NET Core RC2的实体框架Core无法在数据库中创建用户

来自分类Dev

.NET / EF Core中的批量插入优化

来自分类Dev

我可以安全地在ASP.NET Core和EF Core中使用非泛型DbContextOptions吗?

来自分类Dev

ASP.NET Core EF 未找到导航属性

来自分类Dev

ASP net Core Razor Pages - EF 和视图的拆分模型

Related 相关文章

  1. 1

    在ASP.NET Core WebApplicationFactory中重写EF Core DbContext

  2. 2

    具有在SingleView中创建的实体列表的Asp.Net Core MVC EF模型

  3. 3

    ASP.NET CORE 1.0存储库加载相关数据EF CORE

  4. 4

    如何使用EF Core 3.1.5解决ASP.net Core应用程序中的空引用异常?

  5. 5

    如何使用EF Core更新ASP.NET 5中的dbcontext脚手架?

  6. 6

    在ASP.NET Core MVC中创建实体列表

  7. 7

    无法使用EF Core 1.1创建迁移

  8. 8

    ASP.NET Core MVC 和 EF Core 1.1

  9. 9

    ASP.NET Core 和 EF Core 1.1 - 使用存储过程显示数据

  10. 10

    使用EF .NET CORE删除所有相关行给用户

  11. 11

    在EF Core和ASP.NET Core中处理并发的最佳实践?

  12. 12

    Asp.Net Core中的EF Core异步可伸缩性

  13. 13

    在没有 EF Core 参考的 ASP.NET 项目中使用 EF 存储?

  14. 14

    使用Include加载相关数据实体ef Core 3.1

  15. 15

    相关实体的过滤器值(asp.net core)

  16. 16

    在.net core MVC中同时创建实体,关系和相关实体

  17. 17

    ASP.NET Core - 无法跟踪实体类型的实例

  18. 18

    在ASP.NET Core中使用FV和EF时获取“无法访问已处置的对象”

  19. 19

    在ASP.NET Core中使用FV和EF时获取“无法访问已处置的对象”

  20. 20

    无法在 ASP.NET Core 代码优先 EF 模型中将 Id 设置为主键

  21. 21

    如何在asp.net core和ef7中的并行方法中使用注入的DbContext?

  22. 22

    无法使用 EF Core 迁移

  23. 23

    使用 EF Core Code First 和 IdentityUser 的 .Net Core API

  24. 24

    具有Identity和ASP.NET Core RC2的实体框架Core无法在数据库中创建用户

  25. 25

    具有Identity和ASP.NET Core RC2的实体框架Core无法在数据库中创建用户

  26. 26

    .NET / EF Core中的批量插入优化

  27. 27

    我可以安全地在ASP.NET Core和EF Core中使用非泛型DbContextOptions吗?

  28. 28

    ASP.NET Core EF 未找到导航属性

  29. 29

    ASP net Core Razor Pages - EF 和视图的拆分模型

热门标签

归档