1

我在旧数据库中有以下表。

数据 dataid PK、年份、数字

data_1 dataid PK,note_1,完成

data_2 dataid PK,note_2,类型,对象

data_other dataid PK, note_other, a, b, c

我的模型类看起来像;

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 和 Entity Framework 5。我想要的只是例如在视图 @Model.Datas.Others.NoteOther 中通过

但是关于如何在这些表之间创建关系的任何提示都很棒!

4

1 回答 1

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; }
}

然后,使用 fluent 定义关系:

        modelBuilder.Entity<Data>().HasOptional(d => d.Data1)
            .WithRequired();
        modelBuilder.Entity<Data>().HasOptional(d => d.Data2)
            .WithRequired();
        modelBuilder.Entity<Data>().HasOptional(d => d.DataOther)
            .WithRequired();

这为我生成了这个数据库:

在此处输入图像描述

于 2012-09-18T12:49:15.497 回答