我总是很难用这个。这是一个简单的问题,我知道我希望数据库最终看起来如何,但我不知道如何到达那里。我有以下实体:
组织
public class Organization
{
[Key]
public int OrganizationId { get; set; }
public string Name { get; set; }
public ICollection<Industry> OrgIndustries { get; set; }
}
行业
public class Industry
{
public int Id { get; set; }
public string Name { get; set; }
}
用户案例是组织可以拥有一个或多个行业(即高等教育和信息技术)。出于应用目的,我希望Industry表可以作为一个不断增长的行业列表,只有名称和ID,没有FK。所以,你知道,一个简单的查找表。最重要的是,我还需要一种方法来跟踪组织所属的行业。在数据库中,它看起来像这样(伪):
[OrgTable]
ColId
Col-OrgIndustryTableFK
...
[OrgIndustryTable]
ColId
ColOrgId
ColIndustryId
[Industry]
ColId
ColName
我设置它的方式现在为Industry表中的Org_Id创建了FK。不是我想要的。我怎样才能得到我想要的东西?
答案 0 :(得分:1)
如果您只想坚持数据注释,只需添加一个属性Industry
引用Organization
s的集合:
public class Industry
{
public int Id { get; set; }
public string Name { get; set; }
// don't forget to make it virtual if you want to option to lazy load
public virtual ICollection<Organization> IndustryOrgs { get; set; }
}
如果您不想将该属性添加到Industry
类,可以通过流畅的API进行配置:
modelBuilder.Entity<Organization>()
.HasMany( o => o.OrgIndustries )
// configures the relationship to be many:many
// without a navigation property on the other
// side of the relationship
.WithMany();