Не могу вставить запись. Данная ошибка "Таблица" tbCustomer "не имеет свойства идентификации. Невозможно выполнить операцию SET" - PullRequest
0 голосов
/ 03 октября 2019

У меня нет столбца идентификаторов в таблице. Мне не требуется идентификатор для кулона с именем CountryID. Я передаю значение CountryID из клиентского запроса для столбца CountryId в качестве первичного ключа. После того, как я выполнил хранимую процедуру, мне выдается указанная ошибка, поскольку «Таблица не имеет свойства идентификации. Невозможно выполнить операцию SET». Как я могу вставить запись без этой ошибки?

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int CountryID { get; set; }

    public string CountryName { get; set; }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int LanguageId { get; set; }

enter image description here

   var result =  await tDBContext.Query<SpResponseMessage>().FromSql("exec sp_synchCountry " +
                 "@p0, @p1, @p2",
                  objCountry.CountryID,
                  objCountry.CountryName
                  objCountry.LanguageId).SingleOrDefaultAsync();

1 Ответ

1 голос
/ 08 октября 2019

Если вы хотите настроить несколько свойств как ключ сущности (известный как составной ключ). Составные ключи могут быть настроены только с использованием Fluent API - соглашения никогда не установят составной ключ, и вы не сможете использовать аннотации данных для его настройки.

 public class MyDbContext:DbContext
{
    public MyDbContext(DbContextOptions<MyDbContext> options):base(options)
    { }

    public DbSet<Country> tbCountry { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Country>()
            .HasKey(c => new { c.CountryID, c.LanguageId });
    }
}

Ссылка: https://docs.microsoft.com/en-us/ef/core/modeling/keys#fluent-api

...