这真的是一个架构问题。我觉得我处理这个问题的方式可能不对,想要一些关于最佳实践的意见。
假设我有一个 Transactions 表和一个 TransactionTypes 表。视图将提交相应的交易数据,这些数据将在我的控制器中进行处理。问题在于,控制器中的逻辑可能有些复杂,并且TransactionType 不是由视图输入提供的,而是在控制器中计算的。(这可能是我的问题之一)
例如,假设视图提交了一个 ViewModel,它会映射到“取款”交易类型。但是,控制器检测到它需要将其更改为“透支”,因为资金不足。我不想做的是:
“...因为我将在我的代码中嵌入字符串字面量。对吗?
好的,所以我可以将这些值映射到强类型,以便我可以做到这一点:”
现在,如果我的数据库查找发生了变化,我只需要更新一个地方的映射,我的控制器仍然可以了解模型。
但这也感觉很奇怪。
我觉得我真正想要的是让Linq To SQL自动生成关联,这样我就可以引用强类型名称(存款、取款和草稿),并确保它始终返回这些在数据库中的当前值。运行时对查找表所做的更改将导致问题,但它看起来更加清晰。
我应该理解什么才能更好地构建这个结构?
提前感谢您拓展我的思路。 :-)
假设我有一个 Transactions 表和一个 TransactionTypes 表。视图将提交相应的交易数据,这些数据将在我的控制器中进行处理。问题在于,控制器中的逻辑可能有些复杂,并且TransactionType 不是由视图输入提供的,而是在控制器中计算的。(这可能是我的问题之一)
例如,假设视图提交了一个 ViewModel,它会映射到“取款”交易类型。但是,控制器检测到它需要将其更改为“透支”,因为资金不足。我不想做的是:
transaction.TypeId =
DataContext.TransactionTypes.Single(x => x.type == "Overdraft").id;
“...因为我将在我的代码中嵌入字符串字面量。对吗?
好的,所以我可以将这些值映射到强类型,以便我可以做到这一点:”
class TranTypes
{
public const long Deposit = 1;
public const long Withdrawal = 2;
public const long Overdraft = 3;
}
...
transaction.TypeId =
DataContext.TransactionTypes.Single(x => x.id == TranTypes.Overdraft);
现在,如果我的数据库查找发生了变化,我只需要更新一个地方的映射,我的控制器仍然可以了解模型。
但这也感觉很奇怪。
我觉得我真正想要的是让Linq To SQL自动生成关联,这样我就可以引用强类型名称(存款、取款和草稿),并确保它始终返回这些在数据库中的当前值。运行时对查找表所做的更改将导致问题,但它看起来更加清晰。
我应该理解什么才能更好地构建这个结构?
提前感谢您拓展我的思路。 :-)