1
In my context I have a File table, and another version of the file, so I did with Entity to return a file, and only one version of the file:
internal Arquivo GetArquivo(string termo)
{
using (var ctx = new GEDEntities())
{
var arquivo = (from arq in ctx.ARQUIVO
where arq.ARQUIVO_GUID == termo
|| arq.XARQUIVO == termo
select new Arquivo()
{
ARQUIVO_GUID = arq.ARQUIVO_GUID,
DIRETORIO_GUID = arq.DIRETORIO_GUID,
EXTENSAO = arq.EXTENSAO,
IS_STREAM = arq.IS_STREAM,
TAG = arq.TAG,
TIPO_DE_ARQUIVO_GUID = arq.TIPO_DE_ARQUIVO_GUID,
ULT_ARQUIVO_VERSAO_GUID = arq.ULT_ARQUIVO_VERSAO_GUID,
URL = arq.URL,
XARQUIVO = arq.XARQUIVO,
}).FirstOrDefault();
if (arquivo == null)
throw new ArquivoException("Arquivo não encontrado");
arquivo.ArquivoVersoes.Add(GetArquivoVersao(arquivo.ULT_ARQUIVO_VERSAO_GUID));
return arquivo;
}
}
/// <summary>
///
/// </summary>
/// <param name="arquivoVersaoGuid"></param>
/// <returns></returns>
internal ArquivoVersao GetArquivoVersao(string arquivoVersaoGuid)
{
using (var ctx = new GEDEntities())
{
var versao = (from ver in ctx.ARQUIVO_VERSAO
where ver.ARQUIVO_VERSAO_GUID == arquivoVersaoGuid
select new ArquivoVersao()
{
ARQUIVO_GUID = ver.ARQUIVO_GUID,
ARQUIVO = ver.ARQUIVO,
USUARIO_PESSOA_GUID = ver.USUARIO_PESSOA_GUID,
TAMANHO = ver.TAMANHO,
DATAHORA = ver.DATAHORA,
ARQUIVO_VERSAO_GUID = ver.ARQUIVO_VERSAO_GUID
}).FirstOrDefault();
if (versao == null)
throw new ArquivoException("Versão não encontrada");
return versao;
}
File class
public class Arquivo
{
public Arquivo()
{
ArquivoVersoes = new List<ArquivoVersao>();
}
public string ARQUIVO_GUID { get; set; }
public string XARQUIVO { get; set; }
public string TAG { get; set; }
public string EXTENSAO { get; set; }
public string URL { get; set; }
public bool IS_STREAM { get; set; }
public string ULT_ARQUIVO_VERSAO_GUID { get; set; }
public string TIPO_DE_ARQUIVO_GUID { get; set; }
public string DIRETORIO_GUID { get; set; }
public TipoDeArquivo TipoDeArquivo { get; set; }
public List<ArquivoVersao> ArquivoVersoes { get; set; }
Class Arquivoversao
public class ArquivoVersao
{
public string ARQUIVO_VERSAO_GUID { get; set; }
public string ARQUIVO_GUID { get; set; }
public byte[] ARQUIVO { get; set; }
public string USUARIO_PESSOA_GUID { get; set; }
public int TAMANHO { get; set; }
public System.DateTime DATAHORA { get; set; }
}
How would a way to receive all the verses from the aqruivos?
You have been here a long time. Try to put titles that help identify the problem. This title means nothing. Describe the problem briefly in a short sentence. No need to say in the title that you are using EF, the tag says so already.
– Maniero
but I’m not sure how to specify that context
– War Lock
if you can help me I really appreciate.
– War Lock
improved, is not ideal, but goes practicing. This helps you even think better about the problem, or who knows describe it better to receive better help.
– Maniero
in this case, it is possible to have only one method, which returns the file and all its versions.
– Tobias Mesquita