Breeze 如何重写EFContextProvider以创建只读OData实体

Breeze 如何重写EFContextProvider以创建只读OData实体,breeze,Breeze,所以我很确定我走上了正确的道路,只是需要一些帮助来实现我想要的方式。因此,为了完成这个只读实体,我知道我需要对EFContextProvider进行子类化,并重写一个方法。我知道我可以通过重写SaveChanges来实现这一点,但我想知道是否应该重写Dictionary属性,将readonly属性保留在Dictionary之外。这会有什么影响吗?如果是这样,它会产生什么影响?我假设您有客户端逻辑,阻止它尝试将更改保存到“只读”实体。这就需要保护服务器,服务器应该拒绝任何试图保存“只读”实体的请求

所以我很确定我走上了正确的道路,只是需要一些帮助来实现我想要的方式。因此,为了完成这个只读实体,我知道我需要对
EFContextProvider
进行子类化,并重写一个方法。我知道我可以通过重写
SaveChanges
来实现这一点,但我想知道是否应该重写
Dictionary
属性,将readonly属性保留在
Dictionary
之外。这会有什么影响吗?如果是这样,它会产生什么影响?

我假设您有客户端逻辑,阻止它尝试将更改保存到“只读”实体。这就需要保护服务器,服务器应该拒绝任何试图保存“只读”实体的请求,对吗


如果是这样,我将把逻辑放在
EFContextProvider.beforeSaveEntity
中,它测试实体是否可保存,如果不可保存则抛出。我经常让我的实体继承自
ISaveable
(我的接口),当我看到一个实体不是时抛出一个异常。

我不确定我是否理解这个问题。你到底想完成什么?抱歉,如果我很密集…基本上,我想确保我的一个实体框架实体没有保存在我的应用程序中。真的就这些。我会用更多信息更新想法事实上我想我明白了,我必须先测试一下想法请发回并让我们知道你采取的方法。:)当然,跟沃德谈过之后。嗯,在我的场景中,我希望实体对于我的breeze OData控制器是只读的,但是我有另一个端点(单独的控制器),它不是OData,除了要保存的新实体之外,它是只读的。将此实体视为发生在客户端上的日志,我希望将其发送回服务器,我的应用程序是一个内部网络破折号等。我现在可以使用它,但我不相信这是最好的方式。我通过类型检查重写EFContextProvider.beforeSaveEntity来检查实体,如果找到,则返回false。。。我开始觉得我应该把这些分开,单独的项目,你知道的。我个人将EFContextProvider从控制器中拉出,并将其包装在单独的组件中。我可以在那里进行配置,并且可能为OData控制器进行与其他控制器不同的配置。这有意义吗?是的,我想我知道你现在在干什么。谢谢沃德