我有一个第三方数据库,我试图与EF Core集成,它使用奇怪的复合列而不是外键。关系由“ Parent_Table_Name”和“ Parent_Id”定义。它们不是键,而只是一个包含表名的nchar(20)和一个分别具有该表ID的int。如果它们没有外键,有什么办法可以在表之间建立导航属性?
提供程序是Microsoft SQL Server。这是描述情况的CREATE语句。
CREATE TABLE [ParentA] (Table_Name nchar(20), Id int)
CREATE TABLE [ParentB] (Table_Name nchar(20), Id int)
CREATE TABLE [ChildC] (Table_Name nchar(20), Id int, Parent_Table_Name nchar(20), Parent_Table_Id int)
这是上面表格给出的一些示例数据的图像。
https://stackblitz.com/edit/openlayers-load-local?file=app/components/map/map.component.ts
答案 0 :(得分:1)
这些被称为多态关联(功能请求#757)。目前尚无一流的支持,但您可以解决它:
malloc
class ParentA
{
public string Table_Name { get; set; }
public int Id { get; set; }
public ICollection<ChildC> ChildCs { get; set; }
}
class ParentB
{
public string Table_Name { get; set; }
public int Id { get; set; }
public ICollection<ChildC> ChildCs { get; set; }
}
class ChildC
{
public string Table_Name { get; set; }
public int Id { get; set; }
public int? ParentA_Id { get; set; }
public ParentA ParentA { get; set; }
public int? ParentB_Id { get; set; }
public ParentB ParentB { get; set; }
}