Исключить первичный ключ в модели в .NET Core, так как SQL генерирует PK при вставке - PullRequest
0 голосов
/ 09 ноября 2018

В моей базе данных SQL Server есть простая таблица Tags:

Tags
(
    ID INT NOT NULL PRIMARY KEY,
    Name VARCHAR(255)  
)

Итак, сейчас я хочу иметь соответствующую модель в моем .NET Core Web API:

Tags.cs:

public partial class Tags
{
    public string Name { get; set; }

    public Tags(string name)
    {
        Name = name;
    }
}

Если я прав, SQL Server должен автоматически добавлять идентификатор при вставке элемента в таблицу Tags.

Как я могу поддержать это, не имея ID в качестве дополнительного свойства в моей модели?

Я также попробовал аннотацию данных для сгенерированных значений при добавлении
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]. Но это не сработает, если я захочу создать новую модель, такую ​​как:

Tags test = new Tags("test");

С параметром ID в моей модели мне всегда нужно будет отправлять дополнительный int, который я не использую при вызове конструктора.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Я попробовал сейчас следующий код внутри моей модели для свойства ID:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }

Пока он работает.

0 голосов
/ 09 ноября 2018

Ваш класс Tags должен иметь свойство Id, иначе вы не сможете различить теги с тем же именем. Если Name уникально, вы можете вообще не добавлять ID и сделать Name первичным ключом, но я бы не рекомендовал это.

Для поддержки этого:

Tags test = new Tags("test");

Вы можете просто создать два конструктора, один для инициализации новых тегов для хранения и один для создания существующих тегов.

public Tags(string name)
{
    Name = name;
}

public Tags(int id, string name)
{
    Id = id;
    Name = name;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...