【发布时间】:2017-05-31 19:32:48
【问题描述】:
我目前正在使用 SQL Server 数据库,需要使用 Entity Framework 将其连接到 ASP.Net。我的数据库中目前没有外键,我是否仍然能够构建数据库并使用诸如.Include() 之类的命令运行 LINQ 查询?
我遇到的当前问题是我的数据库模型存储了历史数据,因此我有几个带有复合主键的表。如果数据库中没有这种一对一关系,我将无法运行任何关于关系的查询,例如 .Include() 方法。
所以我的问题如下:
是否必须在 SQL Server 数据库中包含外键才能使用
.Include()等函数?我在网上阅读到,在 SQL Server 数据库中包含主复合键和单个 PK 之间的 FK 关系的最简单方法是在表中创建虚拟列,以便将复合主键与表外键。除了创建虚拟列或重组数据之外,是否有更好的方法来创建 FK 关系?
以下是复合主键到单个主键的外观示例:
ID*| CODE* | YEAR* | SEQ*| DATA
01 | ABCD | 2015 | 01 | 23
01 | ABCD | 2016 | 01 | 24
02 | ABCD | 2016 | 01 | 21
CODE* | DESC
ABCD | AlphabetSoup
- = 表的主键
【问题讨论】:
-
依赖实体FK需要指向主体实体PK。在您的示例中,具有复合 PK 的表是依赖表,因此将
Table1.CODE设置为与Table2.CODE的 FK 关联没有问题。关联将是多(表 1)对一(表 2)。
标签: sql sql-server linq data-modeling composite-primary-key