gpt4 book ai didi

c# - EF 代码优先模型的自定义属性

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:24 25 4
gpt4 key购买 nike

目前在一个新项目中使用 EF 6。我已经使用 EF 一段时间了,所以对它非常熟悉——至少作为它的普通用户是这样。

我们希望在 SQL(最终是 Azure SQL)和 Azure 表存储之间拆分数据存储。

拆分的原因是实体上的某些数据不适合关系数据库。例如,我们有一些客户更喜欢联系人具有属性 A,B,C,D 而另一个客户更喜欢具有 F,G,H,I,J,K,L - 因此将这部分数据存储在 NoSql 解决方案中更有意义,这样我们就不会限制自己,而不是在表中添加数十列来处理该模型的不同需求。

我们目前在新版本中对这些数据集进行序列化/反序列化,虽然不理想,但还可以。特别是考虑到在每次读/写时执行此任务可能会很昂贵。

所以 - 这引出了我的问题。 (此时没有代码显示)

我认为我可以使用自定义属性(例如 [NoSqlStore])装饰某些数据模型的特定属性,然后对这些属性使用react。例如,我可以重写 EF 中的 SaveChanges() 方法,以将数据保存到适当的表存储(如果实体上的任何属性都包含该属性)。

最困难的部分,至少是我目前正在努力解决的问题,是如何处理从数据库中读取的内容。理想情况下,我希望能够监听(或覆盖)EF 中在获取数据时触发的某些内容。为此,EF 中是否内置了这样的事件/方法?我想如果我可以在 EF 填充我的模型时拦截它,我就可以对任何属性修饰使用react。

最佳答案

在 EF6 中,您可以使用命令拦截机制,每次执行命令时都会调用拦截器。如果需要,您还可以修改结果(虽然可能有点麻烦)。 This article是一个很好的起点。另一种方法是查看 ObjectContext.ObjectMaterialized事件并填充未由 EF 在此事件的处理程序中填充的属性。

关于c# - EF 代码优先模型的自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com