代码之家  ›  专栏  ›  技术社区  ›  Bart Schelkens

多重性在关系“CW\u FirmaCommunication\u CwFirma”中的角色“CW\u FirmaCommunication\u CwFirma\u Source”中无效

  •  0
  • Bart Schelkens  · 技术社区  · 7 年前

    我有一家公司(CW_Firma),可以通过0到多种方式与他们联系(CW_Firma通信)。 我正在使用EntityFramework和FluentAPI创建关系。

    [Table("dbo.CW_Firma")]
    public class CW_Firma
    {
        [Key]
        [Column("F_VAT")]
        public int VatNumber { get; set; }
    }
    
    [Table("dbo.CW_FirmaCommunication")]
    public class CW_FirmaCommunication
    {
        [Key]
        [Column("FC_VAT")]
        public int VatNumber { get; set; }
        [Column("FC_Data")]
        public string FC_Data { get; set; }
    }
    
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<CW_FirmaCommunication>()
            .HasRequired(c => c.CwFirma)
            .WithMany()
            .HasForeignKey(f => f.VatNumber);
    }
    

    当我运行代码时,会出现以下异常:

    谁能告诉我哪里出了问题?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Grzesiek Danowski    7 年前
    1. 您使用fluent api和映射注释-我只希望使用一个,
    2. 在注释映射中,您声明CW_Firma通信表的字段VatNumber是主键(如CW_Firma中的VatNumber),这意味着您在使用想要1:many的fluent api时具有1:1的关系。

    [Table("dbo.CW_FirmaCommunication")]
    public class CW_FirmaCommunication
    {
        [Key]
        [Column("Communnication_Id")]
        public int CommunicationId { get; set; }
    
        [Column("FC_VAT")]
        public int VatNumber { get; set; }
    
        public CW_Firma Firma { get; set; }
    
        [Column("FC_Data")]        
        public string FC_Data { get; set; }
    }
    

    新映射:

    modelBuilder.Entity<CW_FirmaCommunication>()
                .HasRequired<CW_Firma>(c => c.Firma)
                .WithMany()
                .HasForeignKey(f => f.VatNumber);
    

    它在我的测试数据库中工作。

        2
  •  0
  •   Bart Schelkens    7 年前

    public class CW_FirmaCommunication
    {
        [Key]
        public int FC_ID { get; set; }
        public int FC_VAT { get; set; }
        public int FC_Type { get; set; }
        public string FC_Data { get; set; }
    
        [ForeignKey("FC_VAT")]
        public virtual CW_Firma CwFirma { get; set; }
    }
    
    public class CW_Firma
    {
        [Key]
        public int F_VAT { get; set; }
    }
    

    我从“OnModelCreating”中删除了代码。