我有2個實體..... 1-0的關係(和這份執行檔案館)EF - 保存父實體與兒童
public class Documento
{
public int DocumentoID { get; set; }
public int? ExpedienteID { get; set; }
public int? TipoDocumentoID { get; set; }
public int? ArchivoID { get; set; }
public DateTime? FechaRegistro { get; set; }
public int? Fojas { get; set; }
public string Referencia { get; set; }
public bool TieneArchivoFisico { get; set; }
public DocumentoAdicional? Adicional { get; set; }
public virtual Expediente Expediente { get; set; }
public virtual TipoDocumento TipoDocumento { get; set; }
public virtual Archivo Archivo { get; set; }
}
public class Archivo
{
public int ArchivoID { get; set; }
public int DocumentoID { get; set; }
public string Nombre { get; set; }
public string Descripcion { get; set; }
public string Resumen { get; set; }
public byte[] DatosArchivo{ get; set; }
public virtual Documento Documento { get; set; }
}
當我保存這個2 ......他們正確地保存到DB,但他們懸空....這是我用來保存代碼:
public bool AdjuntarDocumentoAExpediente(Documento documento, string nombreArchivo, Stream streamArchivo, string descripcion, string resumen, out string mensajeError)
{
bool resultado = false;
mensajeError = string.Empty;
try
{
using (var contexto = new ModeloTC())
{
documento.TieneArchivoFisico = true;
Archivo archivo = new Archivo();
archivo.Documento = documento; //adding relation here
archivo.Descripcion = descripcion;
archivo.Nombre = nombreArchivo;
archivo.Resumen = resumen;
archivo.DatosArchivo = ConvertirStreamABytes(streamArchivo);
contexto.Archivos.Add(archivo);
contexto.SaveChanges();
resultado = true;
}
}
catch (Exception ex)
{
mensajeError = "BLL AdjuntarDocumentoAExpediente:" + ex.GetBaseException().Message;
}
return resultado;
}
問題是...是,執行此方法後,這是我的DB數據是如何模樣。 ...
Table Archivo
ArchivoID DocumentoID Nombre Descripcion Resumen DatosArchivo
5 0 C:\Users\test\justafilename.txt lalala lalalalala
Table Documento
DocumentoID ExpedienteID ArchivoID FechaRegistro .....
5 1 NULL 2014-11-06 .....
正如您所看到的,Archivo表中的DocumentoID具有0作爲值......並且Documento表中的ArchivoID具有NULL ......除關係外,兩個實體都已正確保存。 .....我不知道爲什麼會發生這種情況......
但是您注意到ArchivoID和DocumentoID同時爲xxxId?看起來像EF創建了一個pk/fk ... – 2014-11-06 23:03:32