ADO.NET实体框架和标识列

时间:2020-03-06 14:35:46  来源:igfitidea点击:

实体框架是否知道标识列?

我正在使用SQL Server 2005 Express Edition,并且有几个表,其中主键是一个标识列。当我使用这些表创建实体模型并将该模型与实体数据源绑定到formview一起使用以创建新实体时,系统要求我输入标识列的值。有没有一种方法可以使框架不要求标识列的值?

解决方案

实体框架可以识别并可以处理标识列。

问题可能不是EF本身,而是它的生成的formview。尝试从插入表单中删除标识列的输入,让我们看看会发生什么。

我们应该设置标识列的标识规范,以便将(Is Identity)属性设置为true。我们可以在SSMS的表设计器中执行此操作。然后,我们可能需要更新实体数据模型。

可能是我们说"主键是一个标识列"的意思,或者我们错过了此步骤。

如果所有其他方法都失败了,请尝试删除EntityModel并从SQL Server重新导入。如果我们一直在调整键和关系并依赖于"从数据库更新模型"功能,那么在RC版本中仍然存在一些问题,我发现重新导入可能会有所帮助。

我知道这篇文章已经很老了,但是这可能会帮助下一个到达的人通过Google搜索" Entitiy Framework"和" Identity"来听到。

似乎Entity Frameworks确实尊重服务器生成的主键,就像设置" Identity"属性时一样。但是,应用程序侧模型仍然需要在CreateYourEntityHere方法中提供主键。在对上下文的" SaveChanges()"调用中,此处指定的键将被丢弃。

此处的页面提供了有关此内容的详细信息。

由于某些原因,实体框架无法完全理解身份。正确的解决方法是将该列的"设置器"设置为"专用"。这将使任何生成的UI理解它不应设置身份值,因为它不可能设置私有字段。