Отображение составных клавиш с использованием кода EF

c# entity-framework entity-framework-6 sql-server

Вопрос

Таблица сервера Sql:

SomeId PK varchar(50) not null 
OtherId PK int not null

Как мне сначала отобразить это в коде EF 6?

public class MyTable
{
    [Key]
    public string SomeId { get; set; }

    [Key]
    public int OtherId { get; set; }
}

Я видел несколько примеров, когда вам нужно установить порядок для каждого столбца, это требуется?

Есть ли там официальная документация?

Принятый ответ

Вам определенно нужно указать порядок столбцов, иначе как SQL Server должен знать, какой из них первым? Вот что вам нужно сделать в вашем коде:

public class MyTable
{
  [Key, Column(Order = 0)]
  public string SomeId { get; set; }

  [Key, Column(Order = 1)]
  public int OtherId { get; set; }
}

Вы также можете посмотреть на этот вопрос . Если вы хотите получить официальную документацию, я бы рекомендовал посмотреть официальный веб-сайт EF . Надеюсь это поможет.

EDIT: Я только что нашел сообщение в блоге от Джули Лерман со ссылками на все виды доброты EF 6. Вы можете найти все , что вам нужно здесь .


Популярные ответы

Для Mapping Composite первичного ключа с использованием инфраструктуры Entity мы можем использовать два подхода.

1) Переопределяя метод OnModelCreating ()

Например: у меня есть класс модели с именем VehicleFeature, как показано ниже.

public class VehicleFeature
{
    public int VehicleId { get; set; }
    public int FeatureId{get;set;}
    public Vehicle Vehicle{get;set;}
    public Feature Feature{get;set;}
}

Код в моем DBC-тексте будет похож,

public class VegaDbContext : DbContext
{
    public DbSet<Make> Makes{get;set;}

    public DbSet<Feature> Features{get;set;}
    public VegaDbContext(DbContextOptions<VegaDbContext> options):base(options)        
    {           

    }
    // we override the OnModelCreating method here.
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<VehicleFeature>().HasKey(vf=> new {vf.VehicleId, vf.FeatureId});
    }
}

2) Аннотации данных.

public class VehicleFeature
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]  
    [Key]
    public int VehicleId { get; set; }
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]   
    [Key]
    public int FeatureId{get;set;}
    public Vehicle Vehicle{get;set;}
    public Feature Feature{get;set;}
}

Для получения дополнительной информации см. Ссылки ниже.

1) https://msdn.microsoft.com/en-us/library/jj591617(v=vs.113).aspx

2) Как добавить составной уникальный ключ с помощью EF 6 Fluent Api?



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему