2010-06-03 1 views
5

Я пишу автономное приложение, и я подумал, используя Entity Framework для хранения моих данных.Генерирование первичного ключа C# с использованием Entity Framework с локальным файлом базы данных (Sdf)

В настоящее время приложение мало, поэтому я могу использовать файл локальной базы данных для начала работы.

Дело в том, что файл локальной базы данных не имеет возможности автоматически генерировать целые первичные ключи, как это делает SQL Server.

Это не проблема определения столбца ID, как «определить» при создании таблицы, но при попытке вызова метода SaveChanges он бросает следующее исключение:

{ "ключи сервера сгенерированных и серверных генерируемые значения не поддерживаются SQL Server Compact. "}

Любые предложения по управлению первичными ключами для объектов в локальном файле базы данных, которые будут совместимы с SQL Server в будущем?

Спасибо, Ronny

+1

Какую версию Visual Studio и SQL Server Compact Edition вы используете здесь? –

+0

VS 2008 .Net Framework 3.5. Версия Sdf 3.5.5692.0 – Ronny

ответ

2

Есть три общих методов я могу думать, когда база данных не имеет автоматического номер.

1) Сначала введите MAX (ID_column) +1, чтобы получить следующее значение ID. Однако вы должны знать о проблемах с несколькими пользователями. Кроме того, эти номера не являются одноразовыми. Если вы удалите строку и добавите новую строку, вы получите тот же идентификатор. Это может быть или не быть проблемой для вас.

2) Используйте GUID. Довольно много гарантировано быть уникальным, но имеет большой след для столбца идентификатора.

3) Используйте отдельную таблицу клавиш, которая содержит последний идентификатор, который был назначен. Это гарантирует, что числа никогда не используются повторно, но добавляет дополнительную таблицу в вашу базу данных.

Смежные вопросы