我需要设置一个用户首选项表,可以由用户在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来跟踪这些数据。
答案 0 :(得分:1)
需要保存所有用户的产品选择,这可能会导致每位用户有1000行的历史记录。
您不必将每个用户的设置存储在一行中。您可能只需要两列。第一列是用户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可以轻松提供跨数据库查询?
在单个数据库中创建所有必需的表是否存在性能考虑因素?或者我应该分开一些 这些表跨2个数据库?如果是后者,我该如何键入这些数据 按用户ID?
上面的解决方案我认为已经足够了,除非有很多,我的意思是,很多设置,然后你需要找到正确的列类型,varchar或varbinary(你需要保存/读取数据)作为字节,你也可以压缩数据以获得更紧凑的数据。)
我最大的疑惑是我如何首先使用EF代码来使用用户ID来跟踪这些数据。
只需使用正常的外键概念。