【问题标题】:NEWID() SQL Server Function in Entity Framework实体框架中的 NEWID() SQL Server 函数
【发布时间】:2015-10-27 16:04:29
【问题描述】:

我正在使用 AngularJSASP.NETEntity FrameworkSQL 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

P.S :我知道可以通过将SELECT NEWID() 分配给Cap.ID 来使用SQLServer,但我正在寻找一种使用EF。

【问题讨论】:

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


【解决方案1】:

只要做:Cap.ID = Guid.NewGuid();

【讨论】:

  • 我没有教它这么简单,非常感谢! :-)
  • @aBennouna 没问题。如果Cap.IDstring(不应该是),则需要添加.ToString()
  • 是的,我已经添加了它@Magnus
【解决方案2】:

如果您希望 EF 为您完成这项工作,您可以使用 Data Annotations 在您的 Table_Name 实体中执行此操作:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多