我不确定这个问题是否措辞得当,但这就是我要做的事情。
我正在重写他们使用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的尝试是史诗般的失败)。
答案 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; }
}