0

如何为 EF 构建这些表?

第一张表:

public class model1
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

第二张表:

public class model2
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

具有第一个和第二个以及几个字段的连接的表:

public class model3
{
    public int (id from model1){ get; set; }
    public int (id from model2) { get; set; }
    public int (id from model2){ get; set; }
    public decimal Name{ get; set; }
    public decimal Description{ get; set; }
}
4

1 回答 1

0

我认为这可以解决问题(提供您描述的表结构)

public class model3
{
    public virtual model1 Model1 { get; set; }
    public virtual model2 Model2 { get; set; }
    public virtual model2 SecondModel2 { get; set; }

    // if you want the ID fields explicitly,
    // EF will map the keys by property name, 
    // optionaly you can use the ForeignKeyAttribute
    public int Model1Id { get; set; }
    public int Model2Id { get; set; }
    public int SecondModel2Id { get; set; }


    public decimal Name{ get; set; }
    public decimal Description{ get; set; }
}

但是您可能需要重新考虑结构 - 您提出的结构看起来有点可疑 - model1 和 model2 具有相同的字段,所以也许它们不应该被定义为单独的类。model3 类也有一些公共字段,所以也许值得将它们提取到一个公共类中——EF 处理继承。

但是,要获得多对多关系,您需要以下内容:

public class Foo
{
    public int Id {get;set;}
    public virtual ICollection<Bar> Bars {get;set;}
}

public class Bar
{
    public int Id {get;set;}
    public virtual ICollection<Foo> Foos {get;set;}
}

这将创建一个 Foo 表、一个 bar 表和一个 FooBars(或 BarFoos)关联表。

于 2013-04-24T12:27:20.917 回答