2016-10-27 2 views
-3

Моей кодовой таблицы«Help» Столбец не может быть сгенерирован сервером

 
use master 
go 
create database Test01 
go 
use Test01 
SET 
    ANSI_NULLS, 
    QUOTED_IDENTIFIER, 
    CONCAT_NULL_YIELDS_NULL, 
    ANSI_WARNINGS, 
    ANSI_PADDING 
ON; 
go 
CREATE TABLE [dbo].[GiangVien](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [MaGV] AS ('GV'+right('000000'+CONVERT([varchar](10),[ID]),(6))) PERSISTED NOT NULL primary key, 
    [HoTenGV] [nvarchar](255) NOT NULL, 
    [NgaySinh] [datetime] NOT NULL, 
    [GioiTinh] [nvarchar](4) NOT NULL, 
    [DiaChi] [nvarchar](255) NOT NULL, 
    [MaKhoa] [varchar](7) NOT NULL, 
) 

, когда я использую Linq для вставки новых значений этой ошибка Сообщения была бросок:
Первичного ключом столбец типа «VARCHAR (8) 'не может быть сгенерирован сервером. Что мне теперь делать?

+0

Вы должны сделать идентификатор ПК. Почему вы пытаетесь сделать расчетный столбец PK? – stuartd

ответ

0

Ошибка ясно: наличие расчетного столбца в качестве первичного ключа невозможно. Используйте столбец [ID] как ПК.
Если вам нужен эффективный поиск по [MaGV], вы можете создать индекс в этом столбце (кластерном или некластеризованном).

Альтернативой является использование этого:

CREATE TABLE [dbo].[GiangVien](
    [MaGV] VARCHAR(10) PRIMARY KEY, 
    .... 

А затем вычислить/сгенерировать значения, как вы сами вставить их. Это позволит внешним ключам указывать на этот первичный ключ.