0

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

例子:

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

模型:

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) ??

谢谢您的帮助。安杰伊

4

2 回答 2

0

假设 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);
    }
于 2013-02-26T21:54:59.507 回答
0

如果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);
于 2013-02-26T16:03:28.113 回答