使用Entity Framework和本地数据库文件(Sdf)生成C#整数主键

时间:2010-06-03 08:46:31

标签: c# entity-framework sql-server-ce

我正在编写一个独立的应用程序,我想使用Entity Framework来存储我的数据。

目前应用程序很小,所以我可以使用本地数据库文件开始。

问题是本地数据库文件无法像SQL Server那样自动生成整数主键。

在创建表时将ID列定义为“识别”并不是问题,但在尝试调用SaveChanges方法时会引发以下异常:

{“SQL Server Compact不支持服务器生成的密钥和服务器生成的值。”}

如何管理将来与SQL Server兼容的本地数据库文件中的实体的主键?

谢谢,    罗尼

1 个答案:

答案 0 :(得分:2)

我可以想到三种通用技术,数据库没有自动编号。

1)首先执行MAX(ID_column)+1以获取下一个ID值。但是,您需要了解此处的多用户问题。此外,这些数字不仅仅是一次性使用。如果删除行并添加新行,您将获得相同的ID。这对您来说可能是也可能不是问题。

2)使用GUID。几乎可以保证它是唯一的,但ID列的占用空间很大。

3)使用一个单独的密钥表来保存分配的最后一个ID。这样可以确保数字永远不会被重用,但会在数据库中添加一个额外的表。