使用EF Code First键表/数据库上的用户ID

本文关键字:用户 ID 数据库 EF Code First 键表 使用 | 更新日期: 2023-09-27 18:13:23

我需要设置一个用户首选项表,可以由用户在MVC视图中编辑。首选项将主要通过下拉列表进行选择。有几十个选项。我首先使用EF代码与MVC5。

为例。假设有一个包含可用首选项的主表。

ShirtColor     Blue
ShirtColor     Red
PantColor      Black
PantColor      Blue
SockColor      White
SockColor      Brown

然后,当用户编辑他们的首选项时,将会看到一系列允许他们更改首选项的下拉菜单:

Shirt Color:   Blue    <--- Dropdown w/options Blue, Red. Current setting selected.
Pant Color:    Black   <--- Dropdown w/options Black, Blue. Current setting selected.
Sock Color:    White   <--- Dropdown w/options White, Brown. Current setting selected.

用户的首选项将作为默认值使用,应用于站点其他部分的产品选择。需要保存所有用户的产品选择,这可能导致每个用户有1000行的历史记录。

我关心的是数据库设计。知道EF不容易处理跨数据库查询,并且知道这些表需要在用户ID上键入键,有人可以指导我如何首先使用EF代码进行数据库设计吗?

在单个数据库中创建所有必需的表是否有性能方面的考虑?或者我是否应该在两个数据库中隔离这些表?如果是后者,如何按用户ID键入这些数据?

上面的示例场景大大简化了我的需求。实际的数据是用于度量单位的首选项,但它说明了其中的思想——一个包含每个用户可以在其用户配置文件中指定的定义的首选项的主表。我最大的困惑/关注是我如何首先使用EF代码来使用用户ID来跟踪这些数据。

使用EF Code First键表/数据库上的用户ID

需要保存所有用户的产品选择,这可能导致每个用户有1000行的历史记录。

您不必将每个User的设置存储在单行中。您可能只需要两列。第一列是用户id,第二列是格式化值(可以是json)的用户设置。

User Id   Setting
A         {"ShirtColor": "Blue", "PantColor" : "Black", "SockColor" : "Brown"}
B         {"ShirtColor": "Red", "PantColor" : "Black", "SockColor" : "White"}
C         {"ShirtColor": "Blue", "PantColor" : "Blue", "SockColor" : "White"}

知道EF不容易处理跨数据库查询

我想知道,哪个ORM可以轻松地提供跨数据库查询?

在单个数据库中创建所有必需的表是否有性能方面的考虑?或者我应该分离一些这些表跨两个数据库?如果是后者,我如何输入这些数据用户ID?

以上解决方案我认为是足够的,除非真的有很多,我的意思是,很多设置,然后你需要找到正确的列类型,无论是varchar或varbinary(你将需要保存/读取数据作为字节,你也可以压缩数据更紧凑的数据)。

我最大的困惑/担忧是我如何首先使用EF代码来使用用户ID来跟踪这些数据。

使用正常的外键概念。