0

Breeze 从 1.3.2 开始支持继承。DocTest 单元测试基于实体框架服务器演示 TPH、TPT 和 TPC 继承。我正在尝试创建一个类似的数据服务,具有类似的类型继承,例如 BankAccount 作为 EntityBase 的子类型,但在服务器中使用 MongoDb 而不是 EF。所以我松散地遵循 Zza 示例(除了不使用 Angular.js)。

Zza 示例不使用继承,它的元数据使用基本的 JSON 格式。当我从 DocTest 获取元数据时

http://localhost:45678/breeze/inheritance/Metadata

它似乎采用不同的格式(JSDL?),所以我一直在尝试提出等效的 JSON 格式。最初,这看起来像是在元数据中的基本类型中添加“abstract”:“true”,在派生类型中添加“baseType”:“EntityBase”。

有什么理由认为没有 EF 就行不通吗?例如,有什么理由更喜欢 TPH(每层次表)而不是 TPC(每类表)?

4

1 回答 1

0

Breeze 客户端不关心后端是 EF 还是 Mongo,两者都支持继承。Mongo 和 EF 之间的不同之处在于,使用 EF,我们能够从 EF 模型中提取有关继承关系的元数据。这在 Mongo 中是不可能的,因为在 Mongo 数据库中没有关于模型的真正元数据。这意味着使用 Mongo,您必须通过 Breeze 的元数据 API 在客户端上创建元数据。是否以及如何在元数据中创建与 Mongo 查询返回的内容相匹配的继承结构完全取决于您。查看http://www.breezejs.com/documentation/metadata-by-hand了解更多信息。

于 2013-11-11T18:11:43.693 回答