2017-04-12 38 views
0

我有這樣的兩個實體:如何在這種情況下設置流暢的api與one-to-one的關係? (EF6)

public partial class Ficheros 
     { 
      public Guid Idfichero { get; set; } 
      public long Iddocumento { get; set; } 
      public byte[] Fichero { get; set; } 

      public virtual Documentos IddocumentoNavigation { get; set; } 
     } 

public partial class Documentos 
    { 
     public Documentos() 
     { 
      ElementosDocumentos = new HashSet<ElementosDocumentos>(); 
     } 

     public long Iddocumento { get; set; } 
     public string Nombre { get; set; } 
     public long? IdtipoDocumento { get; set; } 
     public string Codigo { get; set; } 
     public decimal? Espacio { get; set; } 
     public string Unidades { get; set; } 
     public long? Bytes { get; set; } 

     public virtual ICollection<ElementosDocumentos> ElementosDocumentos { get; set; } 
     public virtual Ficheros Ficheros { get; set; } 
     public virtual DocumentosTipos IdtipoDocumentoNavigation { get; set; } 
    } 

在數據庫中,IDFichero是唯一標識符和Documentos的IDDocumento是一個很大的INT自動增量。主表是Documentos,只有一個fichero,它是必需的。

我見過的例子,它會讓我IDFichero是IDDocumento,但要在數據庫中存儲一個文件,我需要這個ID是一個唯一標識符。

謝謝。

回答

2

你要描述在EF方面的關係是具有兩個端部的一對一的FK關聯需要,Documentos作爲主要Ficheros依賴

EF不支持顯式FK這種類型的關聯,所以通過去除Ficheros.Iddocumento屬性開始:

public partial class Ficheros 
{ 
    public Guid Idfichero { get; set; } 
    public byte[] Fichero { get; set; } 

    public virtual Documentos IddocumentoNavigation { get; set; } 
} 

然後用下面的流暢配置:

modelBuilder.Entity<Documentos>() 
    .HasRequired(e => e.Ficheros) 
    .WithRequiredPrincipal(e => e.IddocumentoNavigation) 
    .Map(m => m.MapKey("Iddocumento"));