breeze:为什么要继承breeze.Sharp.BaseEntity?

breeze:为什么要继承breeze.Sharp.BaseEntity?,breeze,breeze-sharp,Breeze,Breeze Sharp,我们已经开始考虑使用BreezSharp,因为我们有一个WebAPI ODATA服务,我们希望与ASP.NET站点一起重用(不涉及javascript,只涉及纯C#) 不幸的是,我们刚刚注意到,根据文档,我们所有的模型实体现在都应该继承自Breeze.Sharp.BaseEntity。这对我们来说是不可能的,因为这意味着在我们的商业模式中依赖微风。我们宁愿只对WebAPI服务保持这种依赖性 我们有没有办法避免这种情况?例如,当代理类不从BaseEntity继承时,是否在客户端拥有代理类 对此有何

我们已经开始考虑使用BreezSharp,因为我们有一个WebAPI ODATA服务,我们希望与ASP.NET站点一起重用(不涉及javascript,只涉及纯C#)

不幸的是,我们刚刚注意到,根据文档,我们所有的模型实体现在都应该继承自Breeze.Sharp.BaseEntity。这对我们来说是不可能的,因为这意味着在我们的商业模式中依赖微风。我们宁愿只对WebAPI服务保持这种依赖性

我们有没有办法避免这种情况?例如,当代理类不从BaseEntity继承时,是否在客户端拥有代理类

对此有何想法?

Breeze.Sharp.BaseEntity要求完全在客户端,其原因是提供所有的持久性、导航、密钥修复、更改跟踪和通知以及其他服务,使Breeze客户端如此易于使用

Breeze.Sharp.BaseEntity实现了一个Entity接口,您可以自由地实现它,而不用使用Breeze.Sharp.BaseEntity,但是,这是一项非常重要的任务。如果我们的社区普遍认为这是可取的,我们正在考虑在稍后的日期就此提供一些指导

我们还计划发布IEntity的AOP实现,该实现可以直接注入POCO模型对象之上,但这可能需要PostSharp,并且在某些客户端平台(针对Android/IOS的Xamarin)上运行时可能会出现问题。在我们了解需求之前,并没有时间安排

另一方面,当前的实现非常尊重您的模型对象,只有一个“EntityAspect”属性与几个事件一起添加到您的模型中


过去,我们在许多其他平台和应用程序库上尝试过纯POCO方法,并发现其缺点超过了基类的最低成本,特别是考虑到我们希望该库在任何.NET客户端(包括Xamarin/Mono)中运行。

如果我理解正确,您唯一关心的是,您不想在服务器模型中引用breeze库。显然,客户机和服务器实体类的紧密耦合没有问题,因为它们具有相同的属性,可能还具有共享的方法。我不是在做判断;我只是想确认你的架构决定

你考虑过部分课程吗

在服务器端业务模型项目和客户机模型项目中定义不带breeze的分部类。。。在这里,您可以使用特定于客户机的功能保留相应的分部类。该客户端部分类文件指定breeze#基类

当您进行此操作时,可以在驻留在服务器项目中但不在客户端项目中的部分类文件中隔离仅服务器逻辑

由于微软在他们的愿景中推广VS,这种源文件链接在VS中变得更加容易


我不介意让所有客户端实体在分部类中继承自
BaseEntity
,但这意味着我必须重新编写所有属性。是否有一种方法可以只移植
RaisePropertyChanged
方法?