Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架组合主键和外键_C#_.net_Sql Server_Entity Framework 6_Foreign Keys - Fatal编程技术网

C# 实体框架组合主键和外键

C# 实体框架组合主键和外键,c#,.net,sql-server,entity-framework-6,foreign-keys,C#,.net,Sql Server,Entity Framework 6,Foreign Keys,我正在迁移一个在.NETFramework 4.7.2中开发的软件。我有一个SQL Server数据库。为了创建实体,我首先使用数据库中的代码添加了一个ADO.net对象 实体已经创建,但是当我执行代码时,它返回以下错误 MEG_of ertas_MEG_OPERACIONES::中所有属性的类型 引用约束的从属角色必须与 主体角色中的相应属性类型。类型 实体“MEG_OPERACIONES”上的属性“DT_DIA_OPERACION”不匹配 中实体“MEG_OFERTA”上的属性“I_NRO_

我正在迁移一个在.NETFramework 4.7.2中开发的软件。我有一个SQL Server数据库。为了创建实体,我首先使用数据库中的代码添加了一个ADO.net对象

实体已经创建,但是当我执行代码时,它返回以下错误

MEG_of ertas_MEG_OPERACIONES::中所有属性的类型 引用约束的从属角色必须与 主体角色中的相应属性类型。类型 实体“MEG_OPERACIONES”上的属性“DT_DIA_OPERACION”不匹配 中实体“MEG_OFERTA”上的属性“I_NRO_OFERTA”的类型 引用约束'MEG_of ertas_MEG_OPERACIONES'

我的实体如下

public partial class MEG_OFERTAS : IEntity
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public MEG_OFERTAS()
    {
        MEG_OPERACIONES = new HashSet<MEG_OPERACIONES>();
        MEG_OPERACIONES1 = new HashSet<MEG_OPERACIONES>();
    }

    [Key]
    [Column(Order = 0, TypeName = "numeric")]
    public decimal I_NRO_OFERTA { get; set; }

    [Key]
    [Column(Order = 1, TypeName = "datetime2")]
    public DateTime DT_DIA_OPERACION { get; set; }

    .
    .
    .
    .

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<MEG_OPERACIONES> MEG_OPERACIONES { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<MEG_OPERACIONES> MEG_OPERACIONES1 { get; set; }
}
在de dbcontext中,我有下一段代码

modelBuilder.Entity<MEG_OFERTAS>()
    .HasMany(e => e.MEG_OPERACIONES)
    .WithRequired(e => e.MEG_OFERTAS)
    .HasForeignKey(e => new { e.I_NRO_OFERTA_COMPRA, e.DT_DIA_OPERACION })
    .WillCascadeOnDelete(false);

modelBuilder.Entity<MEG_OFERTAS>()
    .HasMany(e => e.MEG_OPERACIONES1)
    .WithRequired(e => e.MEG_OFERTAS1)
    .HasForeignKey(e => new { e.I_NRO_OFERTA_VENTA, e.DT_DIA_OPERACION })
    .WillCascadeOnDelete(false);
modelBuilder.Entity()
.HasMany(e=>e.MEG_操作)
.需要(e=>e.MEG_of ertas)
.HasForeignKey(e=>新的{e.I_NRO_of erta_COMPRA,e.DT_DIA_operation})
.WillCascadeOnDelete(假);
modelBuilder.Entity()
.HasMany(e=>e.MEG_操作1)
.需要(e=>e.MEG_of ertas1)
.HasForeignKey(e=>新的{e.I_NRO_of erta_VENTA,e.DT_DIA_operation})
.WillCascadeOnDelete(假);


有人能帮我解决问题吗?

看看这个例子。这应该有助于识别错误。我已经在那篇文章中尝试了这些例子。。。正如您所看到的,我的代码中有fluent API部分,但它并不能解决我的问题。。。我看不出我做错了什么
modelBuilder.Entity<MEG_OFERTAS>()
    .HasMany(e => e.MEG_OPERACIONES)
    .WithRequired(e => e.MEG_OFERTAS)
    .HasForeignKey(e => new { e.I_NRO_OFERTA_COMPRA, e.DT_DIA_OPERACION })
    .WillCascadeOnDelete(false);

modelBuilder.Entity<MEG_OFERTAS>()
    .HasMany(e => e.MEG_OPERACIONES1)
    .WithRequired(e => e.MEG_OFERTAS1)
    .HasForeignKey(e => new { e.I_NRO_OFERTA_VENTA, e.DT_DIA_OPERACION })
    .WillCascadeOnDelete(false);