可以在控制器和模型之外使用Id属性吗?

时间:2018-02-28 21:50:17

标签: c# asp.net asp.net-mvc entity-framework

情景:在线预订系统

假设我们有一个在线预订系统,其中包含数据库中的客户列表,客户模型如下所示:

import System.Random
import Data.List
import Control.Monad

mkRands = mapM (randomRIO.(,)0 ). enumFromTo 1. pred

replaceAt :: Int -> a -> [a] -> [a]
replaceAt i c l = let (a,b) = splitAt i l in a++c:(drop 1 b)

swapElems :: (Int, Int) -> [a] -> [a]
swapElems (i,j) xs | i==j = xs
                   | otherwise = replaceAt j (xs!!i) $ replaceAt i (xs!!j) xs

knuthShuffle :: [a] -> IO [a]
knuthShuffle xs =
  liftM (foldr swapElems xs. zip [1..]) (mkRands (length xs))

我们希望执行某些操作,例如:

  • 使用唯一的客户参考号
  • 搜索客户
  • 通过客户参考号
  • 搜索客户所做的任何预订
  • 通过在视图中的文本框中提供客户的ID来修改/创建预订

为此目的使用Id属性是否合适?或者是否首选为public class Customer { public int Id { get; set; } public string Name { get; set; } public DateTime Birthdate { get; set; } public string drivingLicence { get; set; } } 等每个对象创建一个新属性,并使用Id仅查询数据库,将Id属性保留在视图之外。

示例:

到目前为止,我只使用Id属性来查询数据库,如下所示:

'CustomerReferenceNo'

但是想知道这样使用它是否普遍常见:

注意' Id'是指客户ID属性,用于预订特定客户的特定客户。

enter image description here

1 个答案:

答案 0 :(得分:0)

仅用于数据库目的的用户ID更好。我们不能依赖用户ID。此用户ID在不同环境中可能不同。

例如。

客户'Xyz'存储在ID为1的Dev环境数据库中。 相同的客户'Xyz'存储在ID为11的测试环境数据库中。 同一客户'Xyz'存储在ID为21的Live环境数据库中。

最好使用在所有环境中都是唯一的客户参考号。希望这有帮助!