Linq Insert:列名称' '在INSERT的

时间:2018-04-20 11:15:13

标签: c# sql-server entity-framework

我正在使用EF,我无法将数据插入表格。

问题类看起来像这样

[Table("QUESTION")]    
public class QUESTION
{      
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int id { get; set; }

    public int q_id { get; set; }

    public string questname { get; set; }

    public string optionname { get; set; }
} 

插入方法

public string Save(QUESTION newquestion)
{
    try
    {
        using (dbcontextdata Context = new dbcontextdata())
        {
            QUESTION dbquest = new QUESTION();
            dbquest.id = newquestion.id;
            dbquest.q_id  = newquestion.q_id;
            dbquest.questname  = newquestion.questname;
            dbquest.optionname  = newquestion.optionname;
            Context.QUESTIONs.Add(dbquest);
            Context.SaveChanges();
        }
    }
    catch (Exception e)
    {
        return e.Message;
    }
    return "OK";
}

发布数据时,它会在SaveChanges()

中显示错误
  

列名' q_id'在SET子句中多次指定   或INSERT的列列表。列不能分配多个   同一条款中的值。修改子句以确保列   只更新一次。如果此语句更新或插入列   在视图中,列别名可以隐藏代码中的重复。

这里q_id是FK,帮助我。

2 个答案:

答案 0 :(得分:1)

您需要将q_id明确定义为外键,如下所示。

 [ForeignKey("MyForeignTable")]
 public int q_id { get; set; }

答案 1 :(得分:1)

[Index(IsUnique=true)]
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int q_id { get; set; }