Я пытаюсь реализовать 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 является первичным ключом, и я не могу быть уверенным, что любое другое поле будет работать как ключи из-за ненадежного качества данных этих полей.