建模非主键关系
Modeling a non-primary Key relationship
我正在尝试为以下关系建模,目的是首先为 EF 代码设计 类。
Program
table:
ProgramID - PK
ProgramName
ClusterCode
示例数据
ProgramID ProgramName ClusterCode
--------------------------------------
1 Spring A
2 Fall A
3 Winter B
4 Summer B
Cluster
table:
ID
ClusterCode
ClusterDetails
示例数据:
ID ClusterCode ClusterDetails
---------------------------------
1 A 10
2 A 20
3 A 30
4 B 20
5 B 40
我需要将 Program
table 加入 Cluster
table 以便我可以获得每个程序的集群详细信息列表。
SQL 将是
Select
from Programs P
Join Cluster C On P.ClusterCode = C.ClusterCode
Where P.ProgramID = 'xxx'
请注意,对于 Program
table,ClusteCode
不是唯一的。
对于 Cluster
table,ClusterCode
和 ClusterDetail
都不唯一。
我该如何建模才能利用导航属性和代码优先?
假设您已经映射了两个表并在它们之间建立关联并且您正在使用 C#
,您可以使用简单的 join
:
List<Sting> clustedDets=new ArrayList<String>();
var q =
from p in ClusterTable
join c in Program on p equals c.ClusterTable
select new { p.ClusterDetails };
foreach (var v in q)
{
clustedDets.Add(v.ClusterDetails);
}
我正在尝试为以下关系建模,目的是首先为 EF 代码设计 类。
Program
table:
ProgramID - PK
ProgramName
ClusterCode
示例数据
ProgramID ProgramName ClusterCode
--------------------------------------
1 Spring A
2 Fall A
3 Winter B
4 Summer B
Cluster
table:
ID
ClusterCode
ClusterDetails
示例数据:
ID ClusterCode ClusterDetails
---------------------------------
1 A 10
2 A 20
3 A 30
4 B 20
5 B 40
我需要将 Program
table 加入 Cluster
table 以便我可以获得每个程序的集群详细信息列表。
SQL 将是
Select
from Programs P
Join Cluster C On P.ClusterCode = C.ClusterCode
Where P.ProgramID = 'xxx'
请注意,对于 Program
table,ClusteCode
不是唯一的。
对于 Cluster
table,ClusterCode
和 ClusterDetail
都不唯一。
我该如何建模才能利用导航属性和代码优先?
假设您已经映射了两个表并在它们之间建立关联并且您正在使用 C#
,您可以使用简单的 join
:
List<Sting> clustedDets=new ArrayList<String>();
var q =
from p in ClusterTable
join c in Program on p equals c.ClusterTable
select new { p.ClusterDetails };
foreach (var v in q)
{
clustedDets.Add(v.ClusterDetails);
}