如何使用数据注释将int ID转换为字符串ID

本文关键字:ID 转换 字符串 int 何使用 数据 注释 | 更新日期: 2023-09-27 18:01:03

我使用的是实体框架代码优先的方法,希望有一个具有随Id递增的字符串的类。我的sql server中有以下代码可以帮我完成这项工作,但我无法在Package Manager中更新数据库,如果我这样做,将删除递增字符串的class属性。这是Sql代码:

   CREATE TABLE [dbo].[School](
   [SchoolID] [int] IDENTITY(1,1) NOT NULL,
   Emp_ID as 'emp_' + cast(SchoolID as nvarchar(10))Persisted,
   [DayEvent] [nvarchar](100) NULL,
   [DayNote] [nvarchar](250) NULL,
    CONSTRAINT [PK_dbo.School] PRIMARY KEY CLUSTERED 
  (
   [SchoolID] ASC
  )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,      ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  ) ON [PRIMARY]
  GO

如何使用数据注释将int ID转换为字符串ID

首先,如果您先在类中发布代码,我会给出更好的答案。然而,我的假设是,您已经按照真实的方式创建了它,但我认为您错过了DatabaseGenerated属性,该属性指定了数据库如何为属性生成值。

它采用DatabaseGeneratedOption来设置用于为数据库中的属性生成值的模式,并具有Identity选项来将相关属性标记为数据库中自动递增列。

因此,在代码第一个School类中,添加:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]

SchoolID属性之上的属性,例如:

public class School
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int SchoolID { get; set; }
    public string DayEvent { get; set; }
    public string DayNote { get; set; }
    // ...
}

祝你好运!:(