C# 实体框架代码优先模型中的不可空虚拟属性

C# 实体框架代码优先模型中的不可空虚拟属性,c#,.net,entity-framework,ef-code-first,C#,.net,Entity Framework,Ef Code First,我需要从我的站点的实体框架模型生成两个具有一对多关系的数据库表;博客和标签。一个博客可以有很多标签,但一个标签只能属于一个博客 我的博客模型由作为主键的ID属性(Guid)和名称属性(字符串)组成。相似性我的标记模型由作为主键的ID属性(int)和Name属性(string)组成。标记模型还有一个虚拟属性Blog,它应该为Blog表的ID列生成一个外键 下面是我的模型类的摘录: public class Blog { public Guid ID { get; set; } pu

我需要从我的站点的实体框架模型生成两个具有一对多关系的数据库表;博客和标签。一个博客可以有很多标签,但一个标签只能属于一个博客

我的博客模型由作为主键的ID属性(Guid)和名称属性(字符串)组成。相似性我的标记模型由作为主键的ID属性(int)和Name属性(string)组成。标记模型还有一个虚拟属性Blog,它应该为Blog表的ID列生成一个外键

下面是我的模型类的摘录:

public class Blog
{
    public Guid ID { get; set; }
    public string Name { get; set; }
}

public class Tag
{
    public int ID { get; set; }
    public string Name { get; set; }

    public virtual Blog Blog { get; set; }
}
首先使用代码创建数据库时,标记表中的Blog_ID列允许插入null或随机GUID。我如何使用代码优先的方法强制它不允许空值或现有有效博客ID以外的值?

将添加到您的权限中

[Required]
public virtual Blog Blog { get; set; }

您的类的声明应该类似于下面的代码

using System.ComponentModel.DataAnnotations;
suing System.ComponentModel.DataAnnotations.Schema

public class Tag
{
    public int ID { get; set; }
    public string Name { get; set; }
    [Required]
    [ForeignKey("BlogId")]
    public virtual Blog Blog { get; set; }

    public virtual Guid BlogId { get; set; };
}

应将此字段添加到标记类:

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

Site\u ID
在哪里?道歉,打字错误-意思是说Blog\u ID.)