usando Entity Framework / NHibernate com sql2008 geografia tipo de dados
-
03-07-2019 - |
Pergunta
Eu estou usando o SQL Express 2008 e vs2008, escrevendo em c #.
Eu tenho uma tabela db com uma coluna de Geografia nele, no qual eu preciso colocar gps dados que coletou. Quando eu tentei criar um mapeamento Entity-Quadro para esta tabela, ele simplesmente ignorou a coluna com algum aviso sobre não ser capaz de mapear esses tipos de colunas. Eu, então, olhou para projeto nHibernate.Spatial, mas parece que ele só traduz os tipos de geometria, e não a Geografia. Sem sorte lá. Já me disseram que eu posso usar uma exibição com lançando a Geografia para VarBinary, e, em seguida, na classe entidade criada adicionar outra propriedade que desserializa a volta binário em Geografia. Eu acho que vai trabalhar para a leitura dos dados do db, mas eu também precisa inserir essas linhas no meu db, e eu não posso adicionar linhas à vista. Existe algum outro truque que pode usar para facilmente ler e escrever Geografia dados do meu db, no meu código c #?
Solução
Eu não sei muito sobre EF, mas NHibernate permite estendê-lo do quadro tipo usando IUserType
. Há um pouco sobre ele em Ray Houston Blog .
Eu usei com sucesso esta para criar um tipo para que os usos XmlSerialization a um campo XML, com base em exemplo de Ayende
Outras dicas
Neste momento Entity Framework v1 não suporta SQL UDT -. 2008 Tipo Spacial é UDT
Você pode armazenar seus dados long / lat usando WKB (byte [] / varbinary).
Como uma nota lateral eu não notar qualquer apoio à UDT durante o Microsoft MIX09 para a próxima versão (1.5 CTP). Talvez eu perdi alguma coisa.