Asp.net mvc 实体框架和一对零到零(?)连接
当两种依赖表有时必须一起工作时,我遇到了一个有趣的情况 例如: 当两个人从不同的部门带来数据时,一台机器,第二台关于引擎,不知道哪个引擎会去哪个机器,反之亦然。这些表之间的关系是引擎有可选的机器,而机器有可选的引擎。您应该如何看待这些表之间的关系 型号:Asp.net mvc 实体框架和一对零到零(?)连接,asp.net-mvc,entity-framework,entity-framework-4,Asp.net Mvc,Entity Framework,Entity Framework 4,当两种依赖表有时必须一起工作时,我遇到了一个有趣的情况 例如: 当两个人从不同的部门带来数据时,一台机器,第二台关于引擎,不知道哪个引擎会去哪个机器,反之亦然。这些表之间的关系是引擎有可选的机器,而机器有可选的引擎。您应该如何看待这些表之间的关系 型号: public class Machine{ [Key] [ScaffoldColumn(false)] public virtual int MachineId { get; set; } public st
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().has可选(p=>p.Machine)???
modelBuilder.Entity().HasOptional(p=>p.MachineEngine)??
谢谢你的帮助。
Andrzej如果
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);
modelBuilder.Entity()
.has可选(p=>p.MachineEngine)
.有很多
.HasForeignKey(entity=>entity.MetrykiEnginedD);
modelBuilder.Entity()
.has可选(p=>p.Machine)
.有很多
.HasForeignKey(entity=>entity.MachineId);
假设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);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().has可选(x=>x.MachineEngine).WithOptionalDependent();
基于模型创建(modelBuilder);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Machine>().HasOptional(x => x.MachineEngine).WithOptionalDependent();
base.OnModelCreating(modelBuilder);
}