如何在不使用 EF 的情况下向我的实体添加上下文元数据?

2024-01-06

我必须实现一个架构,不幸的是,我们实际上使用 SharePoint 2013 作为我们的主要数据库。 (这不是我的选择,以防你没有注意到)。我在服务器上有一个 Asp.Net MVC 外观应用程序,处理来自 SP 和其他几个数据源的数据组合,然后有一个 JavaScript SPA 作为客户端。另一个问题是客户端需要能够离线工作,因此我需要使用 IndexedDB 来存储数据以供离线访问。

这似乎是breeze.js 的完美用例。我的基本架构是在 MVC 外观中定义一个强类型模型,它将包装我从 SP 获得的非类型数据(以对象[“属性”] 的形式 - 使用 SP 客户端对象模型)。 Breeze 将处理该模型和客户端之间的同步,我将根据需要使用导出/导入功能在 IndexedDB 中缓存数据。

到目前为止,一切都很好。但是……breeze 站点上的 SOA 示例仍在开发中(对我来说,这从根本上来说是一个 SOA 架构,每个 SP 列出一个要组成的服务)。我能找到的最接近的是NoDB http://www.breezejs.com/samples/nodb示例,但这会在客户端上硬编码元数据。我想在 MVC 模型中建立关系和验证,然后将它们传递给客户端,以便验证可以在两个地方运行相同的声明。

这可能吗?如果是这样 - 怎么办?如果没有,有人有解决方法或更好的想法吗?我已经决定在两个不同的地方定义模型(外观和隐含的 SP 列表的结构)。我非常希望避免在客户端中第三次实现它。我愿意让 Breeze.js 直接与 SP REST 端点对话,但我的理解是https://stackoverflow.com/a/15364503/1014822 https://stackoverflow.com/a/15364503/1014822是实现有缺陷并且没有公开所需的元数据。

解决:根据下面接受的答案,我得出以下解决方案:

1) 从 SP ListData.svc 端点生成服务引用 - 从而创建 edmx 和代理类。

2) 在我的存储库中扩展 ContextProvider 并覆盖BuildJsonMetadata像这样:

protected override string BuildJsonMetadata()
{
    XDocument xDoc = XDocument.Load(HttpContext.Current.Server.MapPath("PATH_TO_EDMX"));
    String xString = xDoc.ToString();
    xString = xString.Replace("DATA_SERVICE_NAMESPACE", "APP_NAMESPACE");
    xDoc = XDocument.Parse(xString);
    var jsonText = CsdlToJson(xDoc);
    return jsonText;
}

3)稍微修改breeze.js,编辑第12383行:

var schema = metadata.schema || metadata["edmx:Edmx"]["edmx:DataServices"].schema;

(我大概也可以通过为我的 xDoc 选择后代而不是根节点来修复 ContextProvider 中的这个问题)

4) - 可选择使用@Christoff's非常有用T4TS.tt https://github.com/cskeppstedt/t4ts模板脚本从服务代理类生成 d.ts,这样我就可以对微风加载的数据进行类型安全。

到目前为止,此设置效果很好 - 我可以使用元数据执行基本的 CRUD,并由 SP 作为数据源支持。


As of v 1.2.7,我们已经记录了 Breeze 的元数据模式,并且从您的 Web 服务返回的遵循此模式的 json 对象现在将受到 Breeze 的尊重。

---下面是之前的帖子

我们正在记录如何在下周左右公开任意服务器端元数据,随后不久将提供一些如何使用任意 Web 服务的示例。还涉及一些小的代码更改。

目前,在这些文档完成之前,最好的解决方法是在客户端上创建元数据并使用 jsonResultsAdapter 将服务调用的结果塑造为“实体”。您在客户端上创建的元数据将与您最终在服务器上创建并发送到客户端的元数据完全相同。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不使用 EF 的情况下向我的实体添加上下文元数据? 的相关文章

  • 循环内的局部变量会被垃圾收集吗?

    我想知道将循环内引用的任何变量放在循环外是否更有效 或者它们可以像函数内的变量一样被垃圾收集吗 var obj key val for var i 0 i lt 10 i console log obj or for var i 0 i l
  • 茉莉花单元测试 - 测试对象的未定义属性

    我有以下声明 expect A BAR name toEqual foo 由于我的对象 A 具有顶级属性 BAR 并且 bar 具有值 foo 传递 我想测试我的结构以确认属性 NONEXISTINGPROP 尚未定义 例如 expect
  • 1分30秒倒计时器javascript

    我有代码 但它适用于 2 分钟计时器 我需要将其修改为 1 分 30 秒计时器 我已经尝试过 但未能从 1 30 开始计时器 因为我是这一行的初学者 并且想学习如何做到这一点 这是代码 div div
  • AWS Lambda 提前结束(没有任何显式返回或回调)

    我在放入 AWS Lambda 中的一些 Node js 代码时遇到了一些问题 我需要进行几个异步调用 虽然第一个调用的行为符合我的预期 但 lambda 函数在第二个调用完成之前终止 返回值为 null 这让我认为 lambda 正在执行
  • jQuery - 提高处理 XML 时的选择器性能

    我正在处理一个 XML 文件 当使用 XPath 样式选择器选择节点时 该文件的性能非常慢 这是运行特别慢的部分代码 for i 0 i
  • 将组件注册到现有的 Vue.js 实例

    我是 Vue js 新手 我想注册一个本地组件 如下所述 https v2 vuejs org v2 guide components html Local Registration https v2 vuejs org v2 guide
  • NodeJs读取JSON文件

    我正在使用 NodeJs 读取 json 文件 我的代码非常基本 var obj require sample json console log obj 0 Sample json 文件包含这样的字符串化 JSON sample good
  • Chrome 内存/垃圾收集问题

    我在使用 Chrome 时遇到内存 垃圾收集问题 我正在开发一个照片上传网站 该网站允许我的客户使用 HTML5 和文件 API 拖放照片进行上传 因此这在 IE 中不起作用 它仅适用于 Chrome 和 FF 我还没有在 Safari O
  • Amcharts 图表 - 图表列到自定义 URL 的超链接以在新选项卡/窗口中打开

    我正在尝试制作一个 amcharts 图表 其中的列链接到自定义网址 并希望网址在新选项卡 窗口中打开 我尝试将此代码添加到图形对象中 但它不起作用 它在同一选项卡 窗口中打开链接 listeners event clickItem met
  • 语法:const {} = 变量名,任何人都可以解释或指出我正确的方向[重复]

    这个问题在这里已经有答案了 这个语法在 JavaScript 中意味着什么 可能是 ES6 const 变量名 我目前正在尝试掌握 React 在很多例子中我都遇到过这种语法 例如 const girls guys women men st
  • FormData 中的 Blob 为 null

    我正在尝试通过远程 API 通过 ajax 在 android 中发送创建的照片 我在用着相机图片背景 https github com an rahulpandey cordova plugin camerapicturebackgrou
  • Famo.us 滚动视图高度

    我正在尝试使用著名的顺序布局在滚动视图下方添加图像 但滚动视图的高度有问题 这就是我创建滚动视图的方式 var scrollview new Scrollview direction Utility Direction X options
  • 属性访问器(getter)的扩展运算符问题

    我很难理解为什么以下代码存在一些问题https jsfiddle net q4w6e3n3 3 https jsfiddle net q4w6e3n3 3 Note 所有示例均在 chrome 版本 52 0 2743 116 中进行测试
  • jspm / jQuery / TypeScript - 模块“jquery”没有默认导出

    我正在尝试使用 TypeScript 和 jspm system js 来引导 Web 应用程序进行模块加载 我还没有走多远 安装 jspm 后 并使用它来安装 jQuery jspm install jquery 以及基础知识 main
  • Asp.Net Mvc 无法注销

    这是我的登录代码 var expire DateTime Now AddDays 7 Create a new ticket used for authentication var ticket new FormsAuthenticatio
  • 如何在服务器端按钮点击时关闭当前标签页?

    我尝试在确认后关闭当前选项卡 因此我将以下代码放在确认按钮的末尾 但选项卡没有关闭 string jScript ClientScript RegisterClientScriptBlock this GetType keyClientBl
  • 使用 javascript 调整图像大小以在画布 createPattern 中使用

    我见过一些关于如何调整图像大小的技巧 在 IMG 标签内使用 但我想在里面有一个图像变量 一个 Javascript 调整它的大小 然后使用 a 中的图像 context createPattern 图像 重复 我还没有找到任何提示 关于如
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • 表单序列化javascript(无框架)

    想知道 javascript 中是否有一个没有 jquery 或任何框架的函数可以让我序列化表单并访问序列化版本 2023 年更新 Use FormData https developer mozilla org en US docs We
  • 不可见的 reCAPTCHA - 缺少必需的参数:sitekey

    我正在为每个带有具有类的按钮的表单动态加载不可见的 reCAPTCHAg recaptcha 我遇到的问题是验证码未正确加载 我不知道为什么 我按照验证码网站上的文档进行操作 但我不确定如何以及为什么会出现此错误 Uncaught Erro

随机推荐

  • 从列名称中删除部分字符串[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 那是一个数据 structure list Fasta headers c Person01050 1 Person01
  • Win32 上的 LAPACK

    我一直在探索需要对矩阵进行一些处理的算法 并且我已经在我的 Linux 机器上获得了一些简单的代码 以下是摘录 extern C link w LAPACK extern void dpptrf const char uplo const
  • c中回调注册函数中的userdata有什么用?

    在注册回调函数中有两个参数 一是函数指针 二是userdata int callback register fn ptr cb void userdata fn ptr is typedef 回调期间相同userdata作为参数发回 我了解
  • 子模型更新 Django 外键关系中的父模型

    假设以下模型架构 父模型 class Batch models Model start models DateTimeField end models DateTimeField 许多儿童模型之一 class Data models Mod
  • Java(或任何语言)中的随机洗牌概率[重复]

    这个问题在这里已经有答案了 我正在 Coursera 上观看 Robert Sedgewick 的视频 目前正在观看 Shuffle 视频 他展示了一个 写得不好 的在线扑克洗牌代码 它还有一些其他错误 我已将其删除 因为它们与我的问题无关
  • 从javascript中的字符串路径获取文件名?

    如何从javascript中的字符串路径获取文件名 这是我的代码 var nameString app base controllers filename js this is the input path string 在这里做一些事情只
  • jQuery hasAttr 检查元素上是否有属性[重复]

    这个问题在这里已经有答案了 jQuery 中如何检查元素上是否有属性 如同hasClass 但与attr 例如 if this hasAttr name var attr this attr name For some browsers a
  • PDFmake:pdfmake.createPdf不是一个函数

    安装后pdfmake使用 npm npm install pdfmake save dev 并编译捆绑包webpack我在运行时遇到错误 pdfmake require pdfmake pdfmake createPdf doc defin
  • 更新项目数组中的单个值 |反应还原

    我有一个待办事项列表 并且希望在用户单击 完成 时将数组中该项目的状态设置为 完成 这是我的行动 export function completeTodo id return type COMPLETE TASK completed tru
  • 我可以使用 Scala lift-json 库将 JSON 解析为 Map 吗?

    有没有办法使用 lift json 库的 JObject 类来充当 Map 例如 val json id oid 4ca63596ae65a71dd376938e foo bar size 5 val record JsonParser p
  • 在 bash 脚本中的变量之间复制值

    如何将变量中的数值复制到 bash 脚本中的另一个变量 如果这是C 我会这样做 int a 0 int b a b 我正在尝试这样做 if countip gt totalip then countip eq srctip lt My pr
  • 改造 - 不同的反应

    我正在使用 Retrofit 在 Android 中使用 API 成功响应看起来与错误 失败响应不同 那么我怎样才能实现这一目标呢 我目前有一些影响此的事情 Call
  • 打印 C++ 结构中所有字段的值

    考虑一个简单的结构 struct abc int a char b 我在定义为其结构的变量中获得了一些值 现在我想打印以下内容 a some value b some character 对于任意结构实现此目的的最佳方法是什么 而无需为我遇
  • GWT 项目结构

    现在在我们的项目中 我们有下面提到的结构 我们的项目主要使用GWT和Spring框架 com 客户名称 项目名称 客户端 模块名称 com 客户名称 项目名称 client rpc 模块名称 com customername project
  • HashMap 的迭代器是快速失败而 HashTable 的枚举器不是,这到底是什么意思?

    我正在查找这两个类之间的区别 这一点出现在很多答案中 此博客是来源 http javarevisited blogspot com 2010 10 difference Between hashmap and html http javar
  • 如何将日期时间转换为日期

    我怎样才能转换Date to DateTime反之亦然 E g Date dt new Date 现在我想将其转换为DateTime Also DateTime dtim new DateTime 现在我想将其转换为日期 Is this J
  • 当计算机进入睡眠状态时 setTimeout 会发生什么?

    在现代网络浏览器中 假设我做了一个setTimeout10分钟 12 00 5分钟后让计算机进入睡眠状态 当系统再次唤醒时会发生什么 如果它在 10 分钟之前 12 09 或更晚 16 00 醒来会发生什么 我问的原因是因为我希望每 10
  • 如何重置词典

    如果我像这样声明一个字典 private static Dictionary
  • Visual Studio 2017 的 Windows 服务模板

    默认情况下 Windows 服务模板不再显示 Visual Studio 2017 中的新项目 并且安装程序没有 搜索 功能 所有这些 AZURE 东西都很棒 但我仍然必须做正常的 本地 工作 而且我讨厌维护 2 个版本的 Visual S
  • 如何在不使用 EF 的情况下向我的实体添加上下文元数据?

    我必须实现一个架构 不幸的是 我们实际上使用 SharePoint 2013 作为我们的主要数据库 这不是我的选择 以防你没有注意到 我在服务器上有一个 Asp Net MVC 外观应用程序 处理来自 SP 和其他几个数据源的数据组合 然后