#entity-framework-core #foreign-keys #asp.net-core-3.1
Вопрос:
Я использую ASP.NET Ядро 3.1 API с ядром Entity Framework, и у меня есть две таблицы, первая из которых есть CategoryType
, а вторая CategoryMaster
— вот так:
public class CategoryType
{
[Key]
public int TypeId { get; set; }
public string TypeName { get; set; }
public string TypeValue { get; set; }
}
public class CategoryMaster
{
[Key]
public int CategoryID { get; set; }
public string CategoryName { get; set; }
public string CategoryCode { get; set; }
//Foreign Key data
[Column("CategoryType")]
public string CategoryTypeValue { get; set; }
[ForeignKey("TypeValue")]
public CategoryType CategoryType { get; set; }
[DefaultValue(0)]
public bool? DeleteFlag { get; set; }
}
И DbContext
это выглядит следующим образом:
public virtual DbSet<CategoryType> CategoryType { get; set; }
public virtual DbSet<CategoryMaster> CategoryMaster { get; set; }
TypeValue
Свойство является внешним ключом между этими двумя таблицами, и я не могу его изменить, потому что я выполняю миграцию из устаревшей системы в новую , но проблема в том, что ядро entity framework автоматически определяет ключ идентификатора таблицы как внешний ключ TypeId
, по этой причине я получил эту ошибку:
Недопустимое имя столбца «Значение типа»
Я искал во многих областях и пытался подать заявку, но не пришел ни к какому результату:
- https://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx
- https://www.learnentityframeworkcore.com/configuration/one-to-many-relationship-configuration
- https://gavilan.blog/2019/04/14/entity-framework-core-foreign-key-linked-with-a-non-primary-key/
Как я могу связать внешний ключ с непервичным ключом?
Или с простым вопросом: как я могу сделать таблицу CategoryTypeValue
in CategoryMaster
внешним ключом для CategoryType
таблицы, используя ядро Entity Framework?