Tabela do servidor SQL:
SomeId PK varchar(50) not null
OtherId PK int not null
Como devo mapear isso no código EF 6 primeiro?
public class MyTable
{
[Key]
public string SomeId { get; set; }
[Key]
public int OtherId { get; set; }
}
Eu vi alguns exemplos em que você deve definir a ordem de cada coluna, isso é necessário?
Existe documentação oficial sobre isso em algum lugar?
c#
sql-server
entity-framework
entity-framework-6
fluxo leal
fonte
fonte
SomeId
umstring
ou umint
?Respostas:
Você definitivamente precisa colocar a ordem das colunas, caso contrário, como o SQL Server deve saber qual vai primeiro? Aqui está o que você precisa fazer em seu código:
Você também pode olhar para esta pergunta SO . Se você quiser a documentação oficial, eu recomendo olhar o site oficial da EF . Espero que isto ajude.
EDIT: Acabei de encontrar um post de blog de Julie Lerman com links para todos os tipos de coisas do EF 6. Você pode encontrar o que precisa aqui .
fonte
otherwise how is SQL Server supposed to know which one goes first?
- por que não da mesma forma que conhece a ordem de todas as outras colunas?Para mapear a chave primária composta usando o framework Entity, podemos usar duas abordagens.
1) Substituindo o método OnModelCreating ()
Por exemplo: eu tenho a classe de modelo chamada VehicleFeature conforme mostrado abaixo.
O código em meu DBContext seria como,
2) Por anotações de dados.
Consulte os links abaixo para obter mais informações.
1) https://msdn.microsoft.com/en-us/library/jj591617(v=vs.113).aspx
2) Como adicionar uma chave única composta usando EF 6 Fluent Api?
fonte
Por meio da configuração, você pode fazer isso:
então na configuração de contexto
fonte
Pensei em acrescentar a esta pergunta, pois é o principal resultado de pesquisa do Google.
Como foi observado nos comentários, no EF Core não há suporte para o uso de anotações (atributo da chave) e isso deve ser feito com fluente.
Como eu estava trabalhando em uma grande migração do EF6 para o EF Core, isso foi desagradável e tentei hackear usando o Reflection para procurar o atributo Key e depois aplicá-lo durante OnModelCreating
Não testei totalmente isso em todas as situações, mas funciona em meus testes básicos. Espero que isso ajude alguém
fonte