实体框架DB首先,如何添加实体关联?

时间:2014-07-23 15:11:43

标签: c# entity-framework linq-to-sql

我不确定这个问题是否措辞得当,但这就是我要做的事情。

我正在重写他们使用linq-to-sql的VB.Net应用程序。他们使用了一个包含许多其他对象的对象:

[Table(Name = "dbo.ParentTable")]
public class ParentTable : LINQEntityBase, INotifyPropertyChanging, INotifyPropertyChanged
{
    //Stuff

    //This Guy 
    [Association(Name = "ParentTable_ParentTableProperties", Storage = "_ParentTableProperties", ThisKey = "WQI_Key", OtherKey = "WQI_Key")]
    public EntitySet<ParentTableProperty> ParentTableProperties { get; set; }

    //More stuff
}

当我生成我的数据库第一个模型时,实际上并没有数据库中的关系,所以我最终得到的是表中没有属性的所有属性

public partial class ParentTable
{
    //stuff

    //I need to add the EntitySet or an IEnumerable<ParentTableProperty> here but this is a generated class....

}

我在ORMS中的大部分经验都是使用Fluent NHibernate。我不确定如何在代码中添加关系(我无法编辑表格,原因我可以进入这里)。

链接到讨论此内容的文章会很棒。老实说,我不确定我要做的是什么(因此我在googleing的尝试是史诗般的失败)。

1 个答案:

答案 0 :(得分:0)

感谢Robbin Cremers blog post我找到了一个解决方案(我强调一个解决方案,因为我不太了解这个问题,说它是最好的一个)。由于Entity Framework使用部分类来构建数据库中的对象,因此您可以创建自己的自定义对象并添加到生成的对象中:

 //**********************
 //Blah blah blah 
 //This is generated code
 //Blah blah blah
 //***********************

 public partial class ParentTable
 {
      //stuff
 }

然后在一个新文件中(这样如果你重新生成你的模型就不会被覆盖):

 public partial class ParentTable
 {
     public virtual DbSet<ParentTableProperty> Properties { get; set; }
 }

现在在编译时它将被编译为看起来像一个类。

 public class ParentTable
 {
     //stuff
     public virtual DbSet<ParentTableProperty> Properties { get; set; }
 }