Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 首先编码INSERT语句与外键约束冲突_C#_Linq_Entity Framework - Fatal编程技术网

C# 首先编码INSERT语句与外键约束冲突

C# 首先编码INSERT语句与外键约束冲突,c#,linq,entity-framework,C#,Linq,Entity Framework,我刚开始使用代码优先的方法来创建数据库。我有以下三个表格: public class TagDatabase { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int TagID { get; set; } public string TagName { get; set; } public string Description { get; set; } pu

我刚开始使用代码优先的方法来创建数据库。我有以下三个表格:

public class TagDatabase
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int TagID { get; set; }
    public string TagName { get; set; }
    public string Description { get; set; }
    public int Count { get; set; }

    [ForeignKey("TagTypes")]
    public virtual int TagTypeID { get; set; }
    public virtual ICollection<TagTypesDb> TagTypes { get; set; }

    [ForeignKey("Users")]
    public virtual int CreatedBy { get; set; }
    public virtual UsersDb Users { get; set; }
}

public class TagTypesDb
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int TagTypeID { get; set; }
    public string TagTypeName { get; set; }
}

public class UsersDb
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int UserID { get; set; }
    public string UserName { get; set; }
}
TagTypeId属性允许为空。因此我在OnModelCreating方法中使用了HasOptional


Cananybody请告诉我如何解决这个问题,以及我在这里缺少了什么?

如果对应关系是可选的,则应该使外键属性为null

public class TagDatabase
{
  //sniff...

 [ForeignKey("TagTypes")]
 public virtual int? TagTypeID { get; set; }      //Since TagTypes is optional, this should be nullable
 public virtual ICollection<TagTypesDb> TagTypes { get; set; }

 //sniff...
}

如果您说HasOptionala=>a.TagTypes,则应使外键TagTypeID为nullable。TagTypeID在TagDatabase中是nullable类型。所以我使用了HasOptionala=>a.TagTypes。这是否正确?您的属性是否正确。TagDatabase的TagTypeID属性应为int?而不是int。
TagDatabase_TagTypes: : Multiplicity conflicts with the referential constraint in Role 'TagDatabase_TagTypes_Target' in relationship 'TagDatabase_TagTypes'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be '1'.
public class TagDatabase
{
  //sniff...

 [ForeignKey("TagTypes")]
 public virtual int? TagTypeID { get; set; }      //Since TagTypes is optional, this should be nullable
 public virtual ICollection<TagTypesDb> TagTypes { get; set; }

 //sniff...
}