2017-01-11 73 views
0

我正在使用代碼優先方法開發mvc應用程序。我想根據標識列值生成VarcharID。我知道如何在SQL中實現這一點。我想知道我怎麼能寫出下面的SQL查詢中VoidUp()方法 SQL查詢我想寫在C#MVC中使用Up方法編寫SQL查詢EF

CREATE TABLE [dbo].[EmployeeMaster](
[ID] [int] IDENTITY(1,1) NOT NULL, 
[PreFix] [varchar](50) NOT NULL, 
[EmployeeNo] AS ([PreFix]+ RIGHT('0000000' + CAST(Id AS VARCHAR(7)), 7)) PERSISTED, 
[EmployeeName] VARCHAR(50), 
CONSTRAINT [PK_AutoInc] PRIMARY KEY ([ID] ASC) 
) 

我在Migration.cs代碼太虛截至方法

CreateTable(
      "dbo.Employees", 
      c => new 
       { 
        ID = c.Int(nullable: false, identity: true), 
        EmployeePrefix = c.String(), 
        EmployeeEmpNo = c.String(), // Want to Change stuff Here 
        EmployeeName = c.String(nullable: false), 
       }) 
      .PrimaryKey(t => t.ID); 
+0

我是基於varcharID的?一個「varchar」類型的ID字段? – RBT

+0

@RBT Well varcharID是前綴的組合,即生成的ID和ID。類似於EMP001 –

+0

我建議你在ID字段中使用GUID類型。 –

回答

0

你可以寫在「Configuration.cs」文件的「Seed」方法中需要的數據。你可以找到一個例子here。你的代碼看起來像這樣:

foreach (var entity in context.EmployeeMaster.Where(em => string.IsNullOrEmpty(em.EmployeeNo)) 
{ 
    var idStr = "0000000" + entity.Id.ToString(); 
    entity.EmployeeNo = entity.Prefix + idStr.SubString(idStr.Length - 7); 
} 
context.SaveChanges(); 

希望它能幫助你。

+1

即使鏈接足以提供足夠的信息來解決問題,建議您將核心答案與鏈接一起發佈。這樣,如果鏈接脫機,人們仍然能夠找到答案。 –

+0

當然它很明顯,但我怎樣才能實現我在上面寫的實際任務(情景)。 –