1

我的问题与这个问题有关:实体框架一对一映射问题

我有一个已经有一堆记录的用户表。

Users (Id, UserName, Password, FullName, Gender)

我需要为每个用户添加一堆通知选项:

NotifyForNewComment
NotifyForNewPost
NotifyWhenFriendSignsUp

稍后我可能需要添加更多选项,但总会有 1-1 的关系,所以我的问题是是否将它们存储在单独的表中,比如 UserSettings,或者只是将它们作为列添加到 Users 表中。

在链接的问题(上面)中,建议是创建一个新表并将 UserSettings 表中的 UserId 作为主键(否则,Entity Framework 不喜欢它)。如果这是我必须做的,那么我有几个问题:

  1. 我所有的表都有一个 Id 列。那么 UserSettings 将没有 Id 列,因为 UserId 将是主键?

  2. 我必须为 UserSettings 表打开 Identity Insert,这样当我插入新的用户记录时,我还可以插入带有 UserId 的 UserSettings 记录?

  3. 鉴于我在 Users 表中已经有一堆记录,如果我现在要引入与 Users 表具有 1-1 关系的新 UserSettings 表,我该怎么办?我是否只运行一个脚本来为用户表中的每个用户添加一些默认值的记录?还是我让它变成0-1的关系?

  4. 既然是 1-1 关系,我是否应该不用担心新表,而只需将它们作为列添加到现有的用户表中?

4

1 回答 1

1

我认为您错过了 UserSettings 表的要点。它会有如下列:

  • 用户设置 ID
  • 用户身份
  • 通知

它还可能包含通知的创建时间、当前是否启用以及其他信息。

如果您确切知道通知是什么,并且它们不会更改,那么您可以考虑将它们作为单独的列添加到用户表中。

另一方面,这是一个自然的 1-N 关系,您可能应该这样实现它。

于 2012-12-04T18:55:49.707 回答