我在旧数据库中有以下表格。
数据 dataid PK, 年, 编号
_1 dataid PK, note_1, 完成
_2 dataid PK, 笔记2, 类型, 对象
data_other dataid PK, note_other, 一个, b, ç
我的模型类看起来像;
public class Data
{
public int DataID { get; set; }
public int Year { get; set; }
public int Number { get; set; }
}
public class Data1
{
public int DataID { get; set; }
public int Note1{ get; set; }
public int Completed { get; set; }
}
public class Data1
{
public int DataID { get; set; }
public int Note2 { get; set; }
public string Type { get; set; }
public string Object { get; set; }
}
public class DataOther
{
public int DataID { get; set; }
public int NoteOther { get; set; }
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
public DbSet<Data> Datas { get; set; }
public DbSet<Data1> Data1s { get; set; }
public DbSet<Data2> Data2s { get; set; }
public DbSet<DataOther> DataOthers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Data>().ToTable("data");
modelBuilder.Entity<Data>().HasKey(t => t.DataID);
modelBuilder.Entity<Data1>().ToTable("data_1");
modelBuilder.Entity<Data1>().HasKey(t => t.DataID);
modelBuilder.Entity<Data2>().ToTable("data_2");
modelBuilder.Entity<Data2>().HasKey(t => t.DataID);
modelBuilder.Entity<DataOther>().ToTable("data_other");
modelBuilder.Entity<DataOther>().HasKey(t => t.DataID);
}
我尝试了不同的教程和博客解决方案,但似乎无法实现,
modelBuilder.Entity<Data>()
.HasRequired(a => a)
.WithMany()
.HasForeignKey(a => a);
我看到的问题是我们只有主键而没有外键。我正在使用MVC3和实体框架5.我想要的只是在视图@ Model.Datas.Others.NoteOther
中仅举例说明但是关于如何在这些表之间建立关系的任何提示都很棒!
答案 0 :(得分:0)
听起来你想要几个1:0..1的关系。
要映射它,首先需要映射班级中的实际关系:
public class Data
{
public int DataID { get; set; }
public int Year { get; set; }
public int Number { get; set; }
public Data1 Data1 { get; set; }
public Data2 Data2 { get; set; }
public DataOther DataOther { get; set; }
}
然后,使用流利的方式定义关系:
modelBuilder.Entity<Data>().HasOptional(d => d.Data1)
.WithRequired();
modelBuilder.Entity<Data>().HasOptional(d => d.Data2)
.WithRequired();
modelBuilder.Entity<Data>().HasOptional(d => d.DataOther)
.WithRequired();
这为我制作了这个数据库: