【问题标题】:Entity Framework and one to zero to zero (?) connection实体框架和一对零对零 (?) 连接
【发布时间】:2013-02-27 05:54:59
【问题描述】:

当两种依赖表有时必须一起工作时,我遇到了有趣的情况。

例子:

当两个不同部门的人带数据,一个机器,第二个关于引擎,不知道哪个引擎会去哪个机器,反之亦然。这些表之间的关系是引擎有可选机器,机器有可选引擎。应该如何看待这些表之间的关系?

型号:

public class Machine{

    [Key]
    [ScaffoldColumn(false)]
    public virtual int MachineId { get; set; }

    public string MachineSerialNo { get; set; }

    public virtual int? MetrykiEnginedD { get; set; }
    public virtual MachineEngine MachineEngine { get; set; }
}

public class MachineEngine {

    [Key]
    [ScaffoldColumn(false)]
    public virtual int MachineEngineId { get; set; }

    public virtual string MachineEngineSN { get; set; }

    public virtual int? MachineId { get; set; }
    public virtual Machine Machine { get; set; }
}

代码:

modelBuilder.Entity<MachineEngine>().HasOptional(p => p.Machine) ???

modelBuilder.Entity<Machine>().HasOptional(p => p.MachineEngine) ??

感谢您的帮助。 安德烈

【问题讨论】:

    标签: asp.net-mvc entity-framework entity-framework-4


    【解决方案1】:

    如果MetrykiEnginedD 应该是外键,那么:

    modelBuilder.Entity<Machine>()
                        .HasOptional(p => p.MachineEngine)
                        .WithMany()
                        .HasForeignKey(entity => entity.MetrykiEnginedD);
    modelBuilder.Entity<MachineEngine>()
                        .HasOptional(p => p.Machine)
                        .WithMany()
                        .HasForeignKey(entity => entity.MachineId);
    

    【讨论】:

      【解决方案2】:

      假设 1 'MachineEngine' 只能属于 0 或 1 'Machine', 和 1 'Machine' 只能有 0 或 1 'MachineEngine' 我相信你可以配置如下

          protected override void OnModelCreating(DbModelBuilder modelBuilder)
          {
              modelBuilder.Entity<Machine>().HasOptional(x => x.MachineEngine).WithOptionalDependent();
      
              base.OnModelCreating(modelBuilder);
          }
      

      【讨论】:

        猜你喜欢
        • 2020-01-31
        • 2015-05-04
        • 1970-01-01
        • 1970-01-01
        • 2016-12-16
        • 1970-01-01
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多