NEWID()实体框架中的SQL Server功能

时间:2015-10-27 16:04:30

标签: c# asp.net sql-server entity-framework

我正在使用 AngularJS ASP.NET 实体框架 SQL Server 开发Web应用程序数据库中。

我想使用此方法使用 EF 插入一些行:

public string addRow(int CaptionID, string enLang)
{
    string output = "";
    try
    {
        var Cap = new Table_Name();

        string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

        Cap.CodeId = CaptionID;
        Cap.Created = DateTime.Now;
        Cap.CreatedBy = userName;
        Cap.ID = "";
        Cap.CodeLanguage = "en";
        Cap.CodeCountry = "GB";
        Cap.Caption = enLang;
        _db.Entry(Cap).State = EntityState.Added;

        _db.SaveChanges();

        output = "Created";

    }
    catch (Exception ex)
    {
        output = ex.InnerException.Message;
    }
    return output;
}

此功能有效。

但是我对NEWID()函数有疑问,我已经搜索了很多,知道如何重现它,但我不知道,我已经看过thread但没什么。

事实上,我想将NEWID()分配给Cap.ID

PS :我知道可以通过将SELECT NEWID()分配给Cap.ID来使用SQLServer来实现它,但我正在寻找一种方法来使用 EF

2 个答案:

答案 0 :(得分:4)

只需:Cap.ID = Guid.NewGuid();

答案 1 :(得分:2)

如果您希望EF为您完成工作,您可以使用Data AnnotationsTable_Name实体中执行此操作:

public class Table_Name
{
  [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public Guid ID {get;set;}
  //...
}

这样您就可以将ID列定义为Identity,当您添加新元素并保存更改时,数据库将为您生成ID