问题标签 [strongly-typed-dataset]

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 投票
2 回答
2736 浏览

c# - 将虚拟列添加到强类型数据集

我正在编写一个使用强类型数据集的网站。

创建该表的 DBA 为一列提供了一个表示负数的值。该列是“Do_Not_Estimate_Flag”,其中该列可以包含“T”或“F”。我无法更改基础表或填充它的逻辑。我想要做的是在我的强类型数据集的 DataRow 中添加一个“ESTIMATION_ALLOWED”列。我已经使用可以修改的部分类完成了这项工作。(我可以安全地修改自动生成的部分类和非自动生成的部分类。)逻辑在部分类的属性中。麻烦的是,当值加载ala

它直接进入底层 DataRow 忽略我的财产。我怎样才能最好地达到预期的结果?

这是我的代码:

部分类 MyFunkyDataTable {

0 投票
5 回答
2024 浏览

sql-server - 如何从 MS Access 迁移到 SQL Server 2005?

我有一个从 MS Access 数据库中提取信息的 VB.NET Windows 应用程序。该应用程序的主要作用是从各种格式的 Excel 文件中提取信息,标准化文件布局并将其写入 csv 文件。该应用程序使用 MS Access 作为密钥和交叉引用文件的来源。

Windows 应用程序使用类型化的数据集进行数据库之间的大部分用户交互。标准化是在每台客户端机器上完成的。该应用程序不是...我怎么能这么说...FAST :-)。

问题:将数据库和应用程序迁移到 SQL Server 2005 的最佳方法是什么。我认为在 SSIS 包中编写用于标准化的代码可能是个好主意。

进行此迁移的适当方法是什么?


该应用程序每周从 250 个 excel 文件和每月大约 800 个文件中提取数据,每个文件平均大约 5000 行。有 13 种不同的文件格式被标准化并输出为 3 种不同的标准格式。该应用程序需要 25 分钟。并且运行 40 分钟,具体取决于我们要运行的数据。95%的申请是标准化过程。用户所做的只是选择一些参数然后开始运行。

0 投票
1 回答
1199 浏览

strongly-typed-dataset - ParentRelations 在生成的数据集中不起作用?

我创建了两个表:

出版商

  • PK, PublisherId, int, not null, indentity +1
  • PublisherName,varchar(50),不为空

产品

  • PK, ProductId, int, not null, identity +1
  • 产品名称,varchar(50),不为空
  • PublisherId,整数,不为空

然后我在连接 PublisherId 的那些表之间创建了一个外键约束FK__Product__Publisher 。

这样,我想支持每个都有一个发布者的产品,而每个发布者可以有多个产品。就这么简单。

现在我在 C# 中创建了一个控制台项目,添加了一个类型化数据集和两个 TableAdapter。一个指向 Publisher 一个指向 Product。DataSet-Designer 根据从 SQL Server 获得的内容自动添加关系。

它还会自动生成属性,这些属性应该允许我访问来自选定产品的发布者和来自选定发布者的所有产品。

这是我的测试代码:

但是,这不起作用。使用生成的代码,属性 PublisherRow 如下所示:

this.Table.ParentRelations 不包含关系。它为 null 并且访问它会导致 NullReferenceException。

我在这里做错了什么?

0 投票
4 回答
1695 浏览

.net - 使用 TableAdapter 调用 Oracle SP 非常慢

我有一个在 sql 编辑器(oracle)中执行时运行速度超快的查询:1ms。

由 DataSet-TableAdapter 执行相同的查询(作为存储过程)需要 2 秒。我只是检索20行。

由于我使用的是 TableAdapter,因此返回值存储在 ref 游标中。

如果我要获取 2'000 行,我可以理解构建 DataSet 需要一些时间,但仅 20 行的 2 秒对我来说似乎太多了。

有更好的方法在 oracle 上执行 SP,或者这是唯一的方法?我可以尝试做些什么来提高性能?

谢谢你的帮助!


在 google 中搜索,似乎问题出在 refcursor 上。其他人面临同样的性能问题,但没有提供解决方案。

0 投票
2 回答
830 浏览

c# - 类型化数据集未在添加列时更新

我有一个在 Visual Studio 2008 中用于 winforms 应用程序的 datagridview。datagridview 绑定到一个类型化的数据集。我在从类型化数据集引用的表中添加了几列。因此,我打开输入的数据集并重新配置数据表以显示新列。当我进行预览时,这些列就在那里。但是,当我查看 datagridview 时,没有任何变化。我什至反弹没有变化。我还尝试创建一个新的表适配器,当为数据网格视图选择源时它甚至没有出现?

想法?

0 投票
5 回答
7124 浏览

c# - 移动到另一个项目时无法识别类型化数据集

我将一个类型化的数据集从一个项目移动到一个 ASP Web 应用程序项目。我将键入的数据集放入现有目录之一,就像它在上一个站点的 App_Code 目录中一样,但在此项目中看不到创建该 asp.net 文件夹的选项。

现在,当我尝试实例化类型化数据集时,编译器说“找不到类型或命名空间名称”(您是否缺少 using 指令或程序集引用?)。

想法?

0 投票
6 回答
6707 浏览

sql-server-ce - 使用类型化 DataSet 和 DataGridView 的最后插入记录 ID 问题

我正在为一个简单的数据库应用程序使用以下内容:

  • SQL Server Compact Edition .sdf 文件作为数据库,具有 int 主键 ID。
  • 类型化 DataSet 和 BindingSource 作为数据访问层
  • DataGridView 用于显示数据。

我的问题是,最后插入的记录/行 ID 有问题。当我使用导航器组件的追加按钮向 datagridview 添加一行时,新记录/行的 ID 为-1。即使使用 TableAdapter.Update() 将数据保存到数据库后,它仍然是 -1。我知道我可以使用带有 @@identity 或 scope_identity() 的单独查询来获取最后一个 ID,但是您只需要手动使用另一个查询来更新您的数据听起来并不正确。我在这里错过了什么吗?在保存到数据库并获取刚刚插入的记录的 ID 后,是否有自动更新数据的方法?

另外,我在数据集设计器->表适配器配置->高级窗口中看到了“刷新数据表”选项,但由于某种原因它被禁用了。但是不知道有没有关系。。

我会很感激这方面的任何帮助..

0 投票
4 回答
11537 浏览

c# - 如何根据两个表过滤 TableAdapter 的 FillBy?

我在 Windows 窗体应用程序上使用 VS2008 C# Express 和 Northwind 数据库。

我使用拖放设置两个数据网格视图的主详细信息绑定(我使用了订单和订单详细信息)。在这一点上,一切都按预期工作。为了不返回表中的每一行,我想根据 Orders 表的过滤器和 Orders Details 表中的字段过滤 Orders 表。在 TableAdapter 配置向导中,我使用查询生成器添加了一个新的 FillByMyFilter,它创建了以下查询:

SELECT Orders.[Order ID]、Orders.[Customer ID]、Orders.[Employee ID]、Orders.[Ship Name]、Orders.[Ship Address]、Orders.[Ship City]、Orders.[Ship Region]、 Orders.[Ship Postal Code]、Orders.[Ship Country]、Orders.[Ship Via]、Orders.[Order Date]、Orders.[Required Date]、Orders.[Shipped Date]、Orders.Freight FROM Orders INNER JOIN [Order Details] ON Orders.[Order ID] = [Order Details].[Order ID] WHERE (Orders.[Ship Name] LIKE N'A%') AND ([Order Details].Quantity < 20)

我通过添加两个表得到了这个,但没有检查 Order Details 表中的任何字段框,因此它只会返回原始 Fill 查询中使用的列。我现在只是试图过滤主表中的数据集,而不是返回不同数量的列。订单详细信息的子行仍应像默认的未过滤结果集一样工作。

现在的问题:当我单击执行查询按钮时,它工作正常。我从上面的查询中得到 53 行,而不是使用设计器创建的默认填充的 1078 行。它返回与原始填充查询相同的列。但是,当我尝试运行应用程序时,出现以下约束错误:

“未能启用约束。一行或多行包含违反非空、唯一或外键约束的值。”

我究竟做错了什么?

更新:我认为由于向导创建的 INNER JOIN 导致约束错误。如果我编辑查询以使用 LEFT JOIN,则向导将其更改回 INNER JOIN。

我的问题仍然是如何根据父表和子表中的条件过滤父表(订单)中的记录。我的下一个测试是尝试使用存储过程,但想知道仅使用 TableAdapter 自定义 FillBy 方法。

问候,

调试

0 投票
7 回答
2850 浏览

.net - 有人在 .NET 中使用类型化数据集吗?

我曾经尝试在一个相对较小的生产应用程序中使用类型化的 DateSet。最初它看起来是一个不错的主意,但结果却有所不同。对于一些基本任务来说这还不错,但是一旦需要更高级的东西,它就会受到限制并且惨遭失败。幸运的是,该项目被取消了,从现在开始,我尝试坚持使用像 NHibernate 这样的适当 ORM。

但我仍然想知道——它们是有原因的。也许我只是不明白如何正确使用它们?有没有人在生产系统中成功使用它们?

添加:

您能否快速解释一下您是如何使用它们的?

我试图将它们用作我的 DAL——它是一个 Windows 窗体应用程序,它会从表中获取数据到 DataSet 中,然后在调用 TableManager 的分层更新事物之前使用数据进行操作(不记得确切的名称)。DataSet 为 DB 的每个物理表提供一个表。当我不得不做一些类似主/细节关系的事情时,问题就开始了,我必须一次将一堆记录(一个主记录和几个细节记录)插入到几个表中,同时还要保持外键正确。

添加2:

哦,如果您使用它们,那么您将业务逻辑放在哪里?(验证、计算等)

0 投票
1 回答
12192 浏览

c# - C# 反射:从 Typed DataSet 中获取 DataRow 的字段

我目前正在构建一个方法,该方法DataRow从类型化的 DataSet 中获取一个类型的对象,然后返回DataRow 中字段的JSON格式的字符串(用于 Web 服务)。

通过使用System.Reflection,我正在做这样的事情:

然后在foreach语句中,我将迭代每个字段并获取字段名称和值,并将其格式化为 JSON。


问题是,当迭代props(类型PropertyInfo[])时,我得到了我不想被迭代的属性:

替代文字 http://img88.imageshack.us/img88/2001/datarowreflectionht0.gif

从上图中可以看出,我只需要数组0 - 11中的字段props,因为这些字段是这个特定类型行的“真实字段”。

所以我的问题是,我怎样才能只获取 Typed DataRow 的字段,而不是其他“元数据”?


[更新解决方案]

正如Mehrdad Afshari建议的那样Reflection,我使用的是Table.Columns数组而不是 using 。

这是完成的功能: