C# 如何将ef核心外键字段设置为非空?

C# 如何将ef核心外键字段设置为非空?,c#,.net-core,entity-framework-core,C#,.net Core,Entity Framework Core,我在ef core中有两个实体 public class Post { // ... Some properties public Guid Id { get; set; } /// <summary> /// Gets or sets post platform. /// </summary> public virtual Platform Platform { get; set; } //... More

我在ef core中有两个实体

public class Post
{
    // ... Some properties

    public Guid Id { get; set; }

    /// <summary>
    /// Gets or sets post platform.
    /// </summary>
    public virtual Platform Platform { get; set; }


    //... More properties
}

 public class Platform
{
    public Guid Id { get; set; }

    /// <summary>
    /// Gets or sets platform name.
    /// </summary>
    public string Name { get; set; }

    /// <summary>
    /// Gets or sets platform id.
    /// </summary>
    public string Version { get; set; }

    /// <summary>
    /// Gets or sets platform logo url.
    /// </summary>
    public string LogoUrl { get; set; }
}
公共类职位
{
//…一些属性
公共Guid Id{get;set;}
/// 
///获取或设置post平台。
/// 
公共虚拟平台平台{get;set;}
//…更多的财产
}
公共课堂平台
{
公共Guid Id{get;set;}
/// 
///获取或设置平台名称。
/// 
公共字符串名称{get;set;}
/// 
///获取或设置平台id。
/// 
公共字符串版本{get;set;}
/// 
///获取或设置平台徽标url。
/// 
公共字符串LogoUrl{get;set;}
}
然后我将迁移添加到数据库中

问题是在数据库中,它通过
PlatformId
从post表到平台表有关系,但该列允许null

任何人都可以告诉我这是什么问题,我需要避免这种关系为空


谢谢。

您也可以将外键添加到您的模型中,并使用该外键控制是否允许null

[ForeignKey(nameof(PlatformId))]
public virtual Platform Platform { get; set; }
public Guid PlatformId { get; set; }

您也可以将外键添加到您的模型中,并使用它来控制是否允许null

[ForeignKey(nameof(PlatformId))]
public virtual Platform Platform { get; set; }
public Guid PlatformId { get; set; }

如果希望字段不为空,请添加属性
[必需]

[Required]
public Guid PlatformId { get; set; }

或者,您可以在entity framework fluent的注释中阅读Ivan Stoev的链接

如果希望字段不为空,则添加属性
[必需]

[Required]
public Guid PlatformId { get; set; }

或者您可以在entity framework fluent的评论中阅读Ivan Stoev的链接,只是稍微扩展一下,如果它是
public int?PlatformId
FK可以为空。Id为UUID,而不是null@NIsd,将平台添加到post类,同时添加外键@Roshan:EF在看到nav道具时会添加FK本身(它在代码中就是这样做的),但EF无法理解您是否需要可空性(因为所有类本身都是可空的)。因此,它增加了可空性。如果要禁用可空性,可以通过显式声明FK的类型(
Guid
在您的情况下)是否可空(因为值类型在默认情况下不可空,但可以显式设置为可空)。只是稍微扩展一下,如果它是
public int?PlatformId
FK可以为空。Id为UUID,而不是null@NIsd,将平台添加到post类,同时添加外键@Roshan:EF在看到nav道具时会添加FK本身(它在代码中就是这样做的),但EF无法理解您是否需要可空性(因为所有类本身都是可空的)。因此,它增加了可空性。如果要禁用可空性,可以通过显式说明FK的类型(
Guid
在您的情况下)是否可空(因为值类型在默认情况下不可空,但可以显式设置为可空)。这是一种方法,但对我来说,这有助于理解您可能需要显式地将PlatformID属性添加到Post模型中,以允许您使用[Required]装饰它。(不管您是否将其包含在模型中,EF都会将其添加到表def中)。遗憾的是,您不能将其添加到平台属性(或在模型生成器中使用.IsRequired()),但是,嘿!这是一种方法,但对我来说,它有助于理解您可能需要显式地将PlatformID属性添加到Post模型中,以允许您使用[Required]装饰它。(不管您是否将其包含在模型中,EF都会将其添加到表def中)。遗憾的是,您不能将其添加到平台属性(或在模型生成器中使用.IsRequired()),但是,嘿!