Tok*_*nes 1 c# database wpf entity-framework invoice
我有以下数据库结构:
发票表是我的麻烦所在.场景:第1个月:用户购买产品,制作和参加活动和付款.这些将保存到数据库中.这个月的最后一天,我想向每个用户提出账单/发票.将创建并保存此发票.第2个月:每个产品的价格都会发生变化,第1个月的事件会发生变化.有些付款已被删除.当我从第1个月查找发票时,数据将与我创建它时的数据不同,因为这些值只是指向其他表中数据的指针.
我想要的:创建数据库的不可更改的"图像",其他表的更改不会影响发票.必须直接对发票进行更改.
我尝试过/正在尝试的内容:
只需在Invoice类中创建每个实体的列表.保存到数据库时给出外键约束 - 我是否应该以某种方式强制它在同一个表中创建一个带有新密钥和外键的新实体?
使用通用InvoiceId将子类从超类和子表继承到Payments/Purchases/Products/Eventrelations/Events,为每个新发票创建新实体.
这里对我最好的解决方案是什么?
我认为您最好的选择是对发票表进行非规范化.
规范化的优势在于改变模型中的"波纹".但是你不希望你的发票发生这种情况.
因此,请将导航属性移除到您不希望间接影响发票的所有内容,并在发票内为要保存的每个值创建一个字段.