Как генерировать и автоматически увеличивать идентификатор с помощью entity framework
Почему Entity Framework не генерирует и автоматически увеличивает идентификаторы?
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Web; namespace TwoFactorAuthentication.API.Models { public class leave { [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity), Key()] public int Id { get; set; } public DateTime date { get; set; } public decimal length_hours { get; set; } public decimal lenght_days { get; set; } public int status { get; set; } public string comments { get; set; } public int leave_request_id { get; set; } [Required(ErrorMessage = "Leave Type ID")] public int leave_type_id { get; set; } public int emp_number { get; set; } [Required(ErrorMessage = "Start Time")] public DateTime start_time { get; set; } [Required(ErrorMessage = "End Time")] public DateTime end_time { get; set; } public int duration_type { get; set; } } public class leave_request { [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity), Key()] public int id { get; set; } public DateTime date_applied { get; set; } public int leave_type_id { get; set; } public int emp_number { get; set; } public string comments { get; set; } } }
мои таблицы SQL
SELECT * FROM hrmssoft.aspnetusers; CREATE TABLE leave_request` ( `id` int(10) unsigned NOT NULL, `leave_type_id` int(10) unsigned NOT NULL, `date_applied` date NOT NULL, `emp_number` int(7) NOT NULL, `comments` varchar(256) DEFAULT NULL, PRIMARY KEY (`id`), KEY `emp_number` (`emp_number`), KEY `leave_type_id` (`leave_type_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
класс контроллера-
public async Task<ihttpactionresult> CreateLeaveRequest(ohrm_leave_request leaverequest) { if (!ModelState.IsValid) { return BadRequest(ModelState); } leaverequest.date_applied = DateTime.Now; lvcontext.ohrm_leave_request.Add(leaverequest); await lvcontext.SaveChangesAsync(); return Ok(); }
Что я уже пробовал:
Моя таблица базы данных sql
id` int(10) unsigned Primary NOT NULL,
для автоматической генерации идентификатора.так что я пользуюсь
настоящий кодекс
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity), Key()] public int id { get; set; }
я посылаю эти ценности через почтальона
{ "leave_type_id":"4", "emp_number":87, "comments":"Hello how are you !." }
F-ES Sitecore
Поле id должно быть полем IDENTITY в вашей базе данных.
TCA1105064
но я не хочу устанавливать идентификационную личность.
это невозможно без "идентичности" .
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Идентичность), Ключ()]
public int id { get; set; }
F-ES Sitecore
Если вы не хотите использовать идентификатор, то у вас не может быть последовательных идентификаторов. Вы можете вручную увеличить идентификаторы самостоятельно, но это не удастся в какой-то момент из-за одновременных запросов, которые оба думают, что их ID+1 является "следующим" идентификатором. Оставляя базу данных для обработки этого материала с помощью IDENTITY, вы решаете эту проблему.
Maciej Los
Что такое поставщик баз данных?