我有这两个实体:
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是一个uniqueidentifier,在Documentos中,IDDocumento是一个很大的int自动增量。主表是Documentos,有一个且只有一个fichero,它是必需的。
我见过的例子,它会让我认为IDFichero是IDDocumento,但是要在数据库中存储一个文件,我需要ID是一个唯一标识符。
感谢。
答案 0 :(得分: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"));