我的表格代码
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插入新值时此消息错误是throw:
服务器无法生成类型为“VarChar(8)”的主键列。
我现在应该怎么做 ?
答案 0 :(得分:0)
错误很明显:将计算列作为主键是不可能的。使用[ID]
列作为PK
如果您希望在[MaGV]
上进行有效搜索,则可以在该列上创建索引(群集或非群集)。
另一种方法是使用它:
CREATE TABLE [dbo].[GiangVien](
[MaGV] VARCHAR(10) PRIMARY KEY,
....
然后在插入时自己计算/生成值。这将允许外键指向此主键。