gpt4 book ai didi

Linq2Sql : Can I create entities with foreign key relationships without a primary key in both tables?

转载 作者:行者123 更新时间:2023-12-01 01:37:25 25 4
gpt4 key购买 nike

我的数据库中有 2 个表,我正在尝试为其创建 Linq2Sql 实体。他们还有更多的东西,但这基本上是他们归结为:

房间用户事件
—————————
房间 ID 事件 ID
RoomID(Rooms.RoomID 上的外键)
UserActivity table 本质上只是用户对 Rooms 表执行的操作的日志。

UserActivity表仅用于记录所采取的操作,最初为表创建主键没有多大意义(至少对我而言),直到 Linq2Sql 映射器拒绝创建 UserActivity Room的一部分我的 Linq 实体中的实体。当我在 Visual Studio 设计器中设置实体时,我收到了以下 2 个警告:

  • Warning 1 DBML1062: The Type attribute 'UserActivity' of the Association element 'Room_UserActivity' of the Type element 'Room' does not have a primary key. No code will be generated for the association.
  • Warning 2 DBML1011: The Type element 'UserActivity' contains the Association element 'Room_UserActivity' but does not have a primary key. No code will be generated for the association.


这些警告促使我创建了 ActivityID如上所示,我的表格中的列。

我想知道的是,是否有任何方法可以让 Linq2Sql 在两个表中都没有主键的情况下在我的实体之间创建关系。如果我在 UserActivity 中没有主键表,仍然可以创建实体,但不会生成关系。

是否可以这样做,或者我应该尝试确保我的表中始终有一个主键作为一般的良好做法?

最佳答案

在您的应用程序中存储真实数据的任何表都应该始终有一个主键 - 大多数情况下,在 SQL Server 环境中,一个 INT IDENTITY(1,1) 就可以了。你不必跟踪那些,不需要记账等等。它不会花费你太多,完全容易 - 我看不出有任何理由为什么没有主键,即使在你的 UserActivity 上也是如此。 table 。

ALTER TABLE UserActivity
ADD UserActivityID INT IDENTITY(1,1)
CONSTRAINT PK_UserActivity PRIMARY KEY

你就完成了!

我会说不需要主键的唯一时间是在批量导入大量数据或其他临时场景时使用临时表之类的东西。

马克

关于Linq2Sql : Can I create entities with foreign key relationships without a primary key in both tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/991529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com