У меня есть база данных SQL, которая использует Guid для PK и после вставки генерирует NewId (). У меня есть настройка контекста данных EF, указывающая на эту базу данных с настройкой первичных ключей с ключом Entity: true, Setter: private и StoreGeneratedPattern: Identity, потому что я хочу, чтобы БД управляла ключами, а код не задавал свойство PK.
У меня есть конечная точка OData (System.Web.Data.Services.DataService) для доступа к этим данным (например, Hanselman сделал .
У меня есть другое приложение, в котором есть ссылка на эту услугу. При попытке создать новый объект из этой ссылки (т. Е. Product) первичный ключ ProductId по умолчанию устанавливается в Guid.Empty при выполнении
var serviceEntities = new ServiceEntities(serviceUri); //OData endpoint
var product = new Product();
product.Name = "New Product";
serviceEntities.AddToProducts(product);
serviceEntities.SaveChanges(); // error happens here
При отладке я смотрю на свойство Product.ProductId, и оно имеет значение Guid.Empty. При вызове SaveChanges я не хочу, чтобы поле ProductId отправлялось в сервис. Я получаю ответ:
Ошибка обработки потока запросов.
Свойство ProductId доступно только для чтения
свойство и не может быть обновлено. пожалуйста
убедитесь, что это свойство не
присутствует в запросе полезной нагрузки.
Есть ли способ сделать это или что я могу сделать, чтобы получить эту настройку правильно и при этом БД генерировала ключи.
Здесь те же настройки, что и в примере продукта выше.
альтернативный текст http://i42.tinypic.com/157g593.png