Я разрабатываю веб-приложение с использованием AngularJS , ASP.NET , Entity Framework и базы данных SQL Server .

Я хочу вставить несколько строк с помощью 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 : я знаю, что можно сделать это с помощью SQLServer, назначив SELECT NEWID() на Cap.ID, но я ищу способ сделать это с помощью EF .

2
ben 27 Окт 2015 в 19:04

2 ответа

Лучший ответ

Просто сделай: Cap.ID = Guid.NewGuid();

4
Magnus 27 Окт 2015 в 16:06

Если вы хотите, чтобы EF выполнял эту работу за вас, вы можете сделать это в своей сущности Table_Name, используя Аннотации к данным:

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

Таким образом вы можете определить свой столбец ID как Identity, а при добавлении нового элемента и сохраните изменения, база данных сгенерирует для вас ID.

2
octavioccl 27 Окт 2015 в 16:16