Есть ли способ, чтобы структура сущности использовала значение по умолчанию SQL для вставки и все же разрешала обновление в поле. У нас есть экземпляр, где таблица SQL имеет столбец идентификатора «id» и другой столбец, который установлен на ident_current («table»). Единственный способ, которым я знаю, чтобы поле, вставленное со значением по умолчанию, - установить поле как DatabaseGenerated(DatabaseGeneratedOption.Computed)
, чтобы оно было проигнорировано на вставке. Однако, имея этот атрибут, мы не можем выполнить обновление для столбца. Кроме того, это самостоятельный справочный внешний ключ, поэтому мы не можем выполнить вставку, а затем немедленное обновление, чтобы обойти проблему. Не спрашивайте меня, почему таблица спроектирована таким образом - так же, как она была настроена раньше, поэтому мы сейчас застряли на ней. Простая схема нашей установки ниже:База данных базы данных Entity Framework по умолчанию позволяет обновлять
DomainClass:
Class1 {
public int id {get;set;}
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int id2 {get;set;}
public string Name {get;set;}
}
SQL (псевдо):
Table (
id INT which is an identity(1,1) column,
id2 INT NOT NULL with a default value of ident_current("table")
Name nvarchar(50)
)
Мы хотели бы, чтобы заявление вставить сгенерированный EF быть:
INSERT INTO Table(Name) VALUES('Name')
и обновленная информация:
UPDATE table
SET id2 = *somenumber*, name = 'Name'
Большое спасибо за помощь. Мы также используем EF 4.3.1.0, если это необходимо.
Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – bummi
@bummi: Спасибо за комментарий, я обновил ответ, пытаясь передать суть связанных предложений. Обратите внимание, что, поскольку они являются лишь предложениями для структуры, они не являются частью ответа (что очень просто «Нет»), только указатели потенциального интереса. – tne