问题标签 [dbml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
121 浏览

batch-file - 当我在我的 DBML 文件上运行 msxsl.exe 时,它​​会引入回车符,这会弄乱最后的 SQLMetal.exe 步骤

我刚刚从 VS 2015 升级到 VS 2019(以及 Windows 7 到 Windows 10)。我的项目是在批处理文件中使用 SQLMetal.exe 和 msxsl.exe分三个步骤创建和修改 DBML:

  1. 使用 SQLMetal.exe 生成 DataModel.dbml 文件。
  2. 使用 msxsl.exe 添加数据库转换。
  3. 使用 SQLMetal.exe 生成 DataModel.cs 文件。

当我在新环境中运行它时,它给了我一个奇怪的错误:

经过多次试验和错误,我意识到 msxls.exe(我刚刚下载的)在 DBML 文件中的结束列和关联标记之前添加了回车符。这似乎是导致最终 SQLMetal.exe 步骤出错的原因。

我实际上可以在第 2 步之后打开 DataModel.dbml 文件,并将 "\r\n < /Column>" 上的所有内容替换为 "< /Column>" 和 "\r\n< /Assocation>" 到 "< /Association> ",然后第 3 步似乎有效。显然,我不想每次都这样做。

那么,我需要做什么才能运行 msxsl.exe 并且不让它在结束 Column 和 Association 标签之前添加回车符?

msxls 命令如下:

msxsl 的版本是否重要?

0 投票
2 回答
503 浏览

c# - linq2sql C#:如何从更改模式名称的表中查询

我有一个网络服务,它试图连接到桌面会计应用程序的数据库。

它具有相同名称但具有不同模式名称的表,例如:

Schema 名称采用,等[Year+IncrementalNumber]格式。[202014][202015][202016]

每当我想在数据库中查询客户信用信息时,我应该从具有最大数字的模式中获取信息,例如[DatabaseName].[202016].[CustomerCredit]202016 是否是我数据库中的最新模式。

注意: 会计应用程序数据库中新模式的创建没有规则,完全由会计应用程序的用户决定,安装在不同位置的每个应用程序实例可能有不同的模式数量。

所以当我开发我的网络服务时,我不知道在开发之前连接到哪个模式。在运行时,我可以找到正确的模式以从其表中查询,但我不知道如何设法在查询中获取具有正确模式名称的表信息。我通常创建一个 linq-to-sql dbml 类并使用它的定义从 db 读取信息,但我不知道如何以这种方式管理模式更改?

DBML 设计器管理 Scehma 名称,如下所示:

但是,由于我的应用程序可以在运行时检索模式名称,所以我不知道如何在我的特殊情况下修复表声明。它在 ADO.NET 中很容易处理,但我不知道它在 Linq2SQL 中的等价物:

0 投票
0 回答
43 浏览

c# - 将 POCO 类引入现有解决方案

我的项目结构如下

DAL - 类库 - EDMX 文件(但我也不想依赖实体框架,因此它可能是 Linq to SQL 文件) BusinessLogic - 类库 - ICustomer(接口类,添加,更新,编辑记录) - CustomerService(类继承 ICustomer) - MyContextClass (引用上述 EDMX/DBML 项目的类) 网站- WebForms 项目

最近我们考虑引入一个新项目,即它可以是手机应用程序、桌面应用程序等。

经过一些研究,似乎最好的方法是引入 POCO 类,以便每个新应用程序都可以使用这些类来做同样的事情。

  1. 我需要用这些类引入一个新的类库吗?
  2. 如果是,并且我引入了一个新的类库,我如何生成 POCO 类,尤其是当我有诸如List<Customer> GetCustomers()BusinessLogic 层之类的方法时?我是否必须手动生成每个属性并复制数据库表中的每一列?
  3. 在我的 DAL 中,我有部分类允许我对列使用其他方法,即NormaliseCustomerName当我使用诸如

    c.Name = myValue.Name.NormaliseCustomerName();

针对文本框。

我需要将这些移到 POCO 类中吗?4.如果有人可以给我一个简短的例子,那就太好了,因为我已经阅读了一些教程,但每种方法之间似乎存在差异。

0 投票
1 回答
25 浏览

c# - 从 datacontext 返回相同类型的两个视图

我创建了两个视图,它们从相同的表中返回完全相同的列。两个视图之间的唯一区别是它们过滤不同的参数。我已将这些添加到我的 .dbml 文件中(dbml中的视图图片),然后为这两个视图自动生成了两个类。

在我的代码中,根据属性过滤器的值,查询两个视图之一,无论是当前的还是以前的。我需要将这些视图作为相同类型返回。所以 IOrderedQueryable<> items 有一个返回类型。

目前,它们以 clientOrdersQueryCurrent 或 clientOrdersQueryPrevious 的形式返回。如果我将 IOrderedQueryable<> 项设置为其中之一并尝试转换另一种类型,则会导致运行时错误。

我目前唯一能想到的解决此问题的方法是创建一个类,并在返回后让查询将结果映射到该类。

做这个的最好方式是什么?

我目前使用的 ORM 是 NHibernate。

0 投票
0 回答
29 浏览

.net - 大型 DBML(Linq-to-SQL)在编辑时损坏

我有一个很大的 DBML,当我编辑某些东西时,它会损坏。

我深入研究了这个问题,发现当我保存编辑的 DBML 文件时,它会创建一个新的设计器文件,名称末尾添加了 1。除了所做的更改外,原始设计器文件和新设计器文件相同。

在此处输入图像描述

为了解决这个问题,我必须将 xxxx1.Designer 文件的内容复制到原始文件中,然后删除 xxxx1.Designer 文件。

设计器文件有超过 68,000 行代码。无论如何我可以解决这个错误吗?

谢谢JP

0 投票
0 回答
28 浏览

linq - 不同命名空间和文件中的 .dbml(数据类)

我是 LINQ to SQL 的新手,需要一些帮助来分离数据类与在数据库上执行的 CRUD 操作。我需要从 .dbml 设计器文件中分离出数据类并将其移动到另一个命名空间,最好是在新文件中。

.dbml 文件的默认行为/解析捆绑了所有难以维护的数据类。

有什么办法可以解耦这种机制。

对此问题的任何帮助都将受到高度赞赏。

0 投票
0 回答
55 浏览

c# - 事件在错误的按钮上触发

我有一个带有 2 个单选按钮(rgbIncomingrgbOutgoing)和 1 个复选框(chkIsNoPermission)的 WinForm,它们都有不同的“检查更改”事件,这些事件仅来自设计器。

出于某种原因,在这一行之后(根据堆栈跟踪),如果我评论这一行,一切都按预期工作

[1]BoundDocument.Incoming = rgbIncoming.Checked;

(BoundDocument 是dataBindingSource.dbml文件的名称)

checkBox( chkIsNoPermission) 事件被触发

[1] 上面的行调用this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)) ,但 propertyName 是 excpeted( rgbIncoming) 我还检查了.dbml文件,看起来很好

编辑 chkIsNoPermission.Checked = ...只被调用一次

0 投票
0 回答
15 浏览

database - 转换/执行 DBML 模式以创建/更新数据库表/字段,有吗?

是否有任何库或包可以自动检查 DBML(数据库标记语言)文件并促进对数据库中的表或字段的更改/插入?

换句话说,从 DBML 文件中,创建/删除/更改数据库中的字段和表(mysql、postgres、mariadb、sqlite 等)。

感激的

0 投票
1 回答
8 浏览

visual-studio-2010 - 使用 Designer 对 .dbml 文件进行细微更改后,导致“O/R Designer 验证失败”的原因是什么?

我使用 SQL Server Management Studio 向表中添加了一些列,然后想在 Visual Studio 2010 的项目中引用它们,它是使用实体框架加载的,这似乎没有一个方便的功能来简单地从数据库导入更新.

所以我手动添加了列。它们只是像现有列一样的位列,所以我使用剪切和粘贴来复制该列,然后重命名它们并填写存储字段以匹配。

但是当尝试构建项目时,它会失败:

O/R 设计器验证失败。. . myDB.dbml 错误:无法完成操作。未指定的错误

我发现的关于这些不太有用的错误消息的主要提示涉及重新启动 Visual Studio。这对我没有帮助。

还有什么可能导致(以及什么可以解决)这个错误?