Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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# 在“无标识号”列中插入数据_C#_Entity Framework 4.1 - Fatal编程技术网

C# 在“无标识号”列中插入数据

C# 在“无标识号”列中插入数据,c#,entity-framework-4.1,C#,Entity Framework 4.1,我的数据库中有一个表 此表有一个名为A的列,该列不是实体或自动编号、唯一键或 我用EntityFramework4.1从数据库创建了一个模型 我的代码 using (var contex = new testEntities()) { Table_1 t = new Table_1(); t.A = 1; contex.Table_1.Add(t); contex.SaveChang

我的数据库中有一个表

此表有一个名为A的列,该列不是实体或自动编号、唯一键或

我用EntityFramework4.1从数据库创建了一个模型

我的代码

 using (var contex = new testEntities())
        {
            Table_1 t = new Table_1();
            t.A = 1;
            contex.Table_1.Add(t);
            contex.SaveChanges();
        }
我不想使用表中的标识号或索引。 当我想在其中插入一行时,会出现以下错误:

Unable to update the EntitySet 'Table_1' because it has a DefiningQuery and no 
<InsertFunction> element exists in the <ModificationFunctionMapping> element to
support the current operation.
无法更新EntitySet“Table_1”,因为它具有定义查询且没有
元素存在于要删除的元素中
支持当前操作。

您要么给表一个主键(您似乎不想这样做),要么需要提供一个函数来告诉Entity Framework如何将数据插入数据库

我强烈建议您在表上放置一个主键,除非您有很好的理由不这样做,而且在我这么多年的工作中,我想不出有多少实例需要一个没有主键的表


如果您根本不想要主键,那么您可能会发现这篇文章对于使用存储过程将数据插入数据库很有用:

在“Table_1”中缺少主键定义(这对于类来说是一个荒谬的名称,说明了您如何关心如何做事情,例如正确定义主键)。我们可以通过sql存储过程进行插入,没有问题,但如何在ef中处理它?定义用于插入的存储过程。简单。EF首先在模型中支持这一点。@TomTom,它没有其他方法来消除这一点吗?我想知道EF是否不支持这种情况:)为什么?你说你有一个存储过程。否则,请定义缺少的信息-如果该信息映射到一个表,它将起作用。如果您是通过存储过程工作的,那么请完成配置以允许这样做。