In my context I have a File table, and another version of the file, so I did with the 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;
}
Class File
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 FileVersion
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; }
}
What would be a method to receive all versions of the files?