2013-11-21 1 views
0

Я пытаюсь реализовать Entity Framework в C# для перемещения данных из веб-службы в базу данных SQL Server 2008 R2. Казалось, что все идет вместе плавно, пока я на самом деле не попытался запустить это. Модель считывает поле varchar (50) в базе данных в виде строкового поля, что отлично, потому что это то же самое поле, что и в веб-службе. Фактические данные, содержащиеся в поле представляет собой 7-значный числовой идентификатор, хотя, и поэтому, когда я пытаюсь это:Несоответствие типа или неправильная интерпретация в Entity Framework 4.0?

EntityKey key = new EntityKey("DatabaseEntity.Citations", "ID", idNum); 

Citation dbrecord = (Citation)CitationDB.GetObjectByKey(key); 

Я получаю следующее сообщение об ошибке:

Exception occurred: The type of the key field 'ID' is expected to be 'System. 
String', but the value provided is actually of type 'System.Int32'. 
Parameter name: key 
    at System.Data.EntityKey.ValidateTypeOfKeyValue(MetadataWorkspace workspace, 
EdmMember keyMember, Object keyValue, Boolean isArgumentException, 
String argumentName) 
    at System.Data.EntityKey.ValidateEntityKey(MetadataWorkspace workspace, 
    EntitySet entitySet, Boolean isArgumentException, String argumentName) 
    at System.Data.Objects.ObjectContext.TryGetObjectByKey(EntityKey key, Object& 
value) 
    at System.Data.Objects.ObjectContext.GetObjectByKey(EntityKey key) 
    at MyLibrary.MyClass.FindSpecificRecordsByState(String username, 
String[] states)... 

Я попытался изменить тип в модель Int32 и преобразовала строки в записи веб-службы в Int32, но сборка прекратила компиляцию в этот момент и дала мне множество ошибок.

Есть ли что-нибудь, что я могу сделать, чтобы обойти эту проблему? Поле ID является первичным ключом, и я не могу быть уверенным, что любое другое поле будет работать как ключи из-за ненадежного качества данных этих полей.

ответ

0

По-видимому, тип «строка» не мешает Сущности решить, что это фактически другой тип. Сотрудник предложил добавить Convert.ToString() вокруг значения idNum (который имеет строку типа, а не тип String), и теперь он работает нормально.

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