使用带有本地数据库文件 (Sdf) 的实体框架生成 C# 整数主键
Posted
技术标签:
【中文标题】使用带有本地数据库文件 (Sdf) 的实体框架生成 C# 整数主键【英文标题】:C# integer primary key generation using Entity Framework with local database file (Sdf) 【发布时间】:2010-06-03 08:46:30 【问题描述】:我正在编写一个独立的应用程序,我想使用实体框架来存储我的数据。
目前应用程序很小,所以我可以使用本地数据库文件开始。
问题是本地数据库文件没有像 SQL Server 那样自动生成整数主键的能力。
在创建表时将ID列定义为“identify”没有问题,但是在尝试调用SaveChanges方法时会抛出以下异常:
“SQL Server Compact 不支持服务器生成的键和服务器生成的值。”
对于未来将与 SQL Server 兼容的本地数据库文件中的实体的主键管理方法有何建议?
谢谢, 罗尼
【问题讨论】:
您在这里使用的是什么版本的 Visual Studio 和 SQL Server Compact Edition? VS 2008 .Net Framework 3.5。自卫队版本 3.5.5692.0 【参考方案1】:对于数据库没有自动编号的情况,我可以想到三种通用技术。
1) 首先执行 MAX(ID_column)+1 以获得下一个 ID 值。但是,您需要注意这里的多用户问题。此外,这些数字不是一次性的。如果您删除一行并添加一个新行,您将获得相同的 ID。这对您来说可能是也可能不是问题。
2) 使用 GUID。几乎可以保证是唯一的,但 ID 列的占用空间很大。
3) 使用单独的键表来保存分配的最后一个 ID。这样可以确保数字永远不会被重复使用,但会在您的数据库中添加一个额外的表。
【讨论】:
以上是关于使用带有本地数据库文件 (Sdf) 的实体框架生成 C# 整数主键的主要内容,如果未能解决你的问题,请参考以下文章
带有 Sql 视图的实体框架在生成 .sql 文件中显示为表
SQL Compact Edition - 不允许访问数据库文件