Я не знаю, почему это, ошибка на SaveChanges (), я ищу в Google, некоторое тело говорят, что использование, EF, таблица базы данных такой имеет первичный ключ, у меня есть это, но все еще ошибка. Сообщение об ошибке является недостаточно четким, оно просто бросает Систему. Данные. UpdateException. Код:
public static void AddAccount(int _acc_id,string _name)
{
dataEntities de = new dataEntities(GetEntityConn());
account acc = new account
{
account_id = _acc_id,
name = _name
};
de.AddObject("account", acc);
de.SaveChanges();
}
Решено: я нашел решение, см. Эту ветку: http://social.msdn.microsoft.com/Forums/en-US / sqlce / thread / 48984bd4-0921-4637-bd8f-8aa1ae9514ab Короче говоря, не используйте int в качестве типа данных, используйте тип uniqueidentifier. Эта проблема не возникает на SQL Server, она возникает только при использовании SQLCE.
Обновление: Я попытался создать такую же таблицу на SQL Server 2008, сгенерировать из нее файл edmx и использовать тот же код для вставки, он работает! Так что я верю в EF 4.0 с SQLCE .... Я загружаю тестовый проект в форме окна, с базой данных SQLCE и с одним событием кнопки, вы можете загрузить его на
http://www.netfrd.com/testproject.zip
Код очень простой, но это действительно не работает.
Предполагаю, что EntitySetName не называется учетной записью, но это трудно сказать без дополнительной информации.
Я бы сделал что-то вроде:
public static void AddAccount(int _acc_id,string _name)
{
dataEntities de = new dataEntities(GetEntityConn());
account acc = new account
{
account_id = _acc_id,
name = _name
};
de.Accounts.Add(acc);
de.SaveChanges();
}
Это избавит от строкового значения, поэтому это также должно помочь при рефакторинге
Мои экстрасенсорные способности говорят мне, что поле account_id имеет уникальное ограничение и что значение _acc_id уже есть в таблице.
Если мои могущественные экстрасенсорные способности ошибочны, то требуется дополнительная информация. 8)