我是新来的实体框架,我挣扎着从我的POCO类创建的数据库。我有一个泛型类,看起来像这样:EF一对多连接表
public class Comment
{
public int Id { get; set; }
public string Text { get; set; }
public DateTime CreatedDate { get; set; }
}
和评论可以被添加到许多对象,让说,例如人和车辆,所以我有这些类
public class Person
{
public int Id { get; set; }
public List<Comment> Comments { get; set; }
}
和
public class Vehicle
{
public int Id { get; set; }
public List<Comment> Comments { get; set; }
}
当EF生成我的数据库它增加了一个PERSON_ID和Vehicle_Id,这对我来说是不正确,因为: 一)这表明,评论涉及个人和AV ehicle,它应该是一个真正的“独立式”对象 b)可以将注释添加到将要求更改表格的未来对象中。
我怎样才能让EF为此使用链接表? (注意:我不能也不想为Comment类添加导航属性,因为每次新对象需要注释时都需要更改类,而且我的注释类位于我的通用库中,与人员或车辆无关)
我发现这篇文章,但我挣扎着从它那里得到我的回答:http://weblogs.asp.net/manavi/archive/2011/05/17/associations-in-ef-4-1-code-first-part-6-many-valued-associations.aspx
感谢您的建议,我对未来的变化表关注的是不涉及这么大的困难,但相关的更多变更控制,这实际上是一个比我要求的简化,在我的应用程序,这可能有大的执行挑战。另外从模式的角度来看,我认为它不得不为每个可能引用它的实体更新一个通用实体,但是我可能会以两种方式争论,但我不喜欢它。我会测试你的建议,但是如果它会创建一个PersonComment表和一个VehicleComment表,它可能不适用于我 –
@AdriaanDavel Table Per Hierarchy为所有注释创建一个表 - 类似于你已经拥有的表,但是具有“Discriminator “专栏。使用TPH时,请参阅我的编辑实际更改的内容。 – Colin