我刚开始使用实体框架,所以决定将其连接到我的现有 SQL Server CE 数据库。我有一个带有 IDENTITY(1,1) 主键的表,但是当我尝试添加实体时,我遇到了上述错误。
据我从微软 Technet 文章中学到,
当使用 Entity Framework 时,SQL Server Compact 不支持具有服务器生成键或值的实体。 实体的键可以被标记为服务器生成,这使得数据库可以在插入或创建实体时为键生成一个值。此外,一个实体的零个或多个属性可以被标记为服务器生成的值。有关更多信息,请参见 Entity Framework 文档中的 Store Generated Pattern 主题。 当与 Entity Framework 一起使用时,SQL Server Compact 不支持具有服务器生成键或值的实体,尽管 Entity Framework 允许您定义具有服务器生成键或值的实体类型。对具有服务器生成值的实体进行数据操作会抛出“不支持”的异常。
现在我有几个问题:
- 如果服务器不支持并会抛出异常,为什么要将键标记为服务器生成?从引用段落中很难理解。
- 当我尝试将 StoreGeneratedPattern="Identity" 添加到我的实体属性时,Visual Studio 报错说不允许。我做错了什么?
- 这个限制的最佳解决方法是什么(包括切换到另一个数据库)?我的限制是零安装和使用实体框架。
StoreGeneratedPattern="None"
。 - Mikhail Poda