当对象包含外键时,使用 EF Core 在 ASP.NET Core 6 中创建对象

屋大维·尼库列斯库

我是 .NET 的初学者,我很难理解如何使用外键创建对象。

假设我有这个Localitate实体(模糊地转换为城市),其中包含一个指向Judet(县)的 FK:

namespace xx.DataLayer.Entities
{
    public class Localitate : BaseEntity
    {
        [Required]
        public string Nume { get; set; }
        [Required]
        public int JudetID { get; set; }
        [Required]
        public virtual Judet Judet { get; set; }

        public Localitate() { }
    }
}

这是我的请求的外观:

public class LocalitateRequest
{
    public string Nume { get; set; }
    public int JudetID { get; set; }
}

当我创建一个Localitate对象时,我应该怎么做?我是否也需要填写导航属性,还是int JudetID足够了?

如果足够了,我会遇到另一个问题 - 如果我插入一个JudetID不存在的,我不会收到任何错误(我认为我应该这样做,如果我要执行插入语句,我的数据库会这样做) .

盲人

当我创建一个 Localitate 对象时,我应该怎么做?我是否也需要填写导航属性,或者 int JudetID 是否足够?

如果您愿意,您可以填写外国 ID,但这非常不直观。想一想,您知道要将对象链接到哪个实体,对吗?因此,构建对象的更自然方式如下:

context.Localitati.Add(new()
{
    Nume = "meep",
    Judet = context.Judete.First(w => w.Nume = "moop")
});

为避免重复查找,您可以使用字典来记忆对象。无论哪种方式,您都需要填写 ID 或外国实体的 ID 字段(可以通过选择它来完成)。

如果我插入一个不存在的 JudetID,我不会收到任何错误

当然,因为那不是外键。要么使用属性声明它[ForeignKey],要么使用正确的命名约定:JudetId.

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

ASP.NET 和 EF Core Web API 为对象中的对象返回 null

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

EF Core 6 无法完成迁移,无法创建类型的对象

非托管代码中的ASP Net Core 1.1和EF 6异常?

使用ASP.Net Core 2 Web App使用EF6调用完整库

使用.net Core / EF Core的SQL Server 2016与ASP MVC应用中的列加密

ASP.NET Core - 使用 EF Core 更新 IMemoryCache 中缓存 List<Element> 的 1 元素

覆盖ASP .NET Core中的请求对象

如何使用 camelCase 序列化 ASP.NET Core/6 中的对象?

具有外键关系的ASP.NET Core Web API和EF Core模型

ASP.NET Core / EF Core 6:dbContext.saveChanges() 产生堆栈溢出错误

使用带有 EF 6 的 ASP.NET Core 控制台应用程序“创建模型时不能使用上下文”

在ASP.Net Core中每个请求一次创建EF Core上下文

使用外键将ASP.NET EF Core插入多个表

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

在 EF 6 Net Core 5 中的 GroupBy 上选择 Min()

针对.NET 4.7.2的ASP.NET Core上的ODP.NET和EF6配置

VS 2015中的Asp.net Core EF

.NET 6 使用 EF CORE 進行遷移

.NET CORE 2 EF包含

.NET Core库中的EF Core

ASP.NET Core 6 [FromQuery] 绑定到对象时返回空值

Linq Nullable 对象必须有一个值。.NET 6 和 EF Core 中的错误

在 asp.net core 6 應用程序中啟動時運行 EF 遷移

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

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

ASP.NET Core MVC 和 EF Core 1.1

为ASP.NET Core中的每个对象创建唯一的路由