#c# #entity-framework #entity-framework-core #code-first #entity-framework-migrations
#c# #сущность-фреймворк #сущность-структура-ядро #сначала код #entity-framework-миграции
Вопрос:
class1
{
[key]
public string id1 {get; set;}
[Key]
public string key2 {get; set;}
}
class2
{
[foreignKey("class1")]
public string class1Id{ get; set; }
}
Теперь здесь, внутри class2
, я хочу использовать только id1
столбец class1
в качестве внешнего ключа.
Как это сделать?
Комментарии:
1. Похоже, это не связано с ASP.NET .
2. Вы не можете. FK может указывать только на уникальный столбец в таблице ссылок (либо первичный, либо альтернативный ключ).
Ответ №1:
Если вы предпочитаете аннотации данных, просто примените атрибут ForeignKey к свойству навигации и предоставьте разделенный запятыми список с именем свойства FK
class1{
[key]
public string id1 {get; set;}
[Key]
public string key2 {get; set;}
}
class2{
public string id1 { get; set;}
public string key2 { get; set;}
[ForeignKey("id1,key2")] // <= the composite FK
public virtual class1 class1{ get; set; }
}
использование свободной конфигурации API намного проще для понимания и менее подвержено ошибкам:
modelBuilder.Entity< class2>()
.HasRequired(e => e. class1)
.HasForeignKey(e => new { e.id1, e.key2 });