2013-03-20 4 views
3

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

ответ

0

АФКАЙКА не существует. См. this и that.

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

Вторая ссылка указывает на предположение об общей обработке значений по умолчанию, которая в настоящее время также не поддерживается, но была бы еще одной потенциальной отправной точкой для добавления поддержки того, что вам нужно.

+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – bummi

+0

@bummi: Спасибо за комментарий, я обновил ответ, пытаясь передать суть связанных предложений. Обратите внимание, что, поскольку они являются лишь предложениями для структуры, они не являются частью ответа (что очень просто «Нет»), только указатели потенциального интереса. – tne

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