在保存对象时,ReferentialConstraint中的依赖属性将映射到存储生成的列

时间:2014-11-21 09:52:13

标签: c# sql-server entity-framework asp.net-mvc-4

每当我尝试将某些内容保存到数据库中时,我都会收到错误:

A dependent property in a ReferentialConstraint is mapped to a store-generated column. Column: 'PackageId'. 

以下是执行此操作的代码,即行DB.SaveChanges();

public ActionResult CreatePackage(Package package, string MaterialId, string SubCategoryId, string Companies)
        {
            ModelState.Clear();

            //add stuff to package
            package.CreatedDate = DateTime.Now;

            DB.Packages.Add(package);
            DB.SaveChanges();

            return Redirect(Url.Action("Index", "Material") + "#Packages");
        }

下面是抛出异常的表格图:

enter image description here

在对stackoverflow进行一些繁重的研究后,我相信我的外键可能有问题:

但是,我无法找到我的代码或我的数据库可能出错的地方。我试图在表包和COmpany之间创建多对多关系。公司可以有几个包装,一些包装可以被几家公司使用。

我觉得奇怪的是,这只会在我尝试创建新对象时发生。例如,如果我有一个包含PackageId = 0的包和一个包含CompanyId = 0的公司,并且我运行了SQL服务器语句:

INSERT INTO GATE_Package_Company
VALUES (0, 0);

一切正常,因为前一个对象已经存在。但是如果我尝试创建一个新的Pacakge对象(一个尚不存在的对象)并尝试保存它,我就会收到错误。现在,根本无法添加新包:S

我错过了什么?

1 个答案:

答案 0 :(得分:0)

问题出在Visual Studio上。通过从'.edmx'文件中删除该表并再次从数据库重新导入该表,问题得以解决。

我正在使用Visual Studio Ultimate 2013,我不知道这个问题是否特定于此版本,或者它是否也会影响其他版本。

我所知道的是,我浪费了2天。老实说,我希望这个答案可以在将来帮助别人。