小编Gra*_*per的帖子

LINQ to SQL中的DBML存储属性是什么?

我目前正在开发一个使用LINQ to SQL进行数据库访问的项目.我有必要手动更新DBML文件,方法是右键单击它并使用XML编辑器打开它,因为我不想重新生成文件并丢失对关联成员名称所做的所有更改.

有人可以向我解释DBML文件的Association元素中存储属性的用途吗?我搜索过这个论坛和谷歌无济于事.每个关联元素中都不存在存储属性.我在我的DBML中包含了XML,它包含并排除了以下存储属性:

  <Association Name="Customer_WorkOrder" Member="Customer" ThisKey="CustomerId" OtherKey="Id" Type="Customer" IsForeignKey="true" />

  <Association Name="Sycode_WorkOrder" Member="WorkOrderOrderStatus" Storage="_Sycode" ThisKey="OrderStatus" OtherKey="recno" Type="Sycode" IsForeignKey="true" />
Run Code Online (Sandbox Code Playgroud)

linq database

4
推荐指数
1
解决办法
1838
查看次数

如何创建通用SQL Server存储过程以基于插入和删除的触发器执行插入审计表

我已根据以下帖子的第一个答案提供的信息实施了审计跟踪框架:

SQL Server历史记录表 - 通过SP或Trigger填充?

最终,我实现的框架使用每个表三个触发器,根据表的更改插入审计信息.

我的插入和删除审计触发器非常简单.但是,更新触发器要复杂得多,因为触发器必须检查以确定每个列是否处于审计控制之下,然后根据Inserted和Deleted列中的列值是否相等来执行插入操作.我不想写不必要的审计记录.最后,我想知道是否有办法编写一个存储过程,通过允许我动态执行下面的insert语句来减少触发器中的代码量.基本上,我设想触发器使用处于审计控制下的每个列名触发sproc,然后存储过程将使用列名来执行下面的代码片段.目前,对于审计控制下的每一列,我都有以下代码,遗憾的是,这会产生大量冗余代码.

建议更改后修改触发器

CREATE TRIGGER [dbo].[Audit_Customers_Update] ON [dbo].[Customers]
FOR UPDATE AS

select FirstName,LastName into #deleted from deleted;

declare /*const*/ @TABLE_NAME sysname = '[table name]';

declare f cursor
local
forward_only
read_only
for
  select c.name, quotename(c.name, '[')
  from
    sys.columns c
    inner join sys.types t on c.system_type_id = t.system_type_id
  where
    c.object_id = object_id(@TABLE_NAME)
    and c.is_computed = 0
    and c.is_identity = 0
    and t.name not in ('text', 'image', 'timestamp', 'xml')
    and (substring(COLUMNS_UPDATED(), ((c.column_id - 1) / 8) + 1, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server audit triggers stored-procedures

3
推荐指数
1
解决办法
1万
查看次数

尝试在C#中调用远程对象时出现套接字问题

我正在开发一个相当简单的分布式应用程序.服务器部分公开了一个名为FuelCommands的远程对象,允许客户端与燃油泵进行交互(即授权,取消授权,重置,获取状态等等).客户端是一个Windows窗体应用程序,它具有用于与泵交互并查看其状态的GUI.无论何时客户端需要与泵交互,它都必须通过服务器上暴露的远程对象来完成.问题是在某些Windows 8计算机上通信并不总是成功.我的开发机器总能工作,但是在运行Windows 8的其他工作站上,我遇到套接字错误.具体来说,错误信息如下:

************** Exception Text **************
System.Net.Sockets.SocketException: An operation was attempted on something that is not a socket

Server stack trace: 
   at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.Runtime.Remoting.Channels.SocketStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at System.Runtime.Remoting.Channels.ChunkedMemoryStream.WriteTo(Stream stream)
   at System.Runtime.Remoting.Channels.Tcp.TcpClientSocketHandler.GetRequestStream(IMessage msg, Int32 contentLength, ITransportHeaders headers)
   at System.Runtime.Remoting.Channels.Tcp.TcpClientSocketHandler.SendRequest(IMessage msg, ITransportHeaders headers, Stream contentStream)
   at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream)
   at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream)
   at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)
Run Code Online (Sandbox Code Playgroud)

下面是一些相关的代码片段,它们应该演示如何公开和访问远程对象.有人可以看看,告诉我为什么我可能会得到这个例外吗?

服务器应用

// Expose …
Run Code Online (Sandbox Code Playgroud)

c# proxy remoting

2
推荐指数
1
解决办法
1257
查看次数

从服务器资源管理器拖放到数据集和 DBML 设计器不工作

今天早上我通过设计器从 Linq to SQL DBML 文件中删除了一个表。进行多项更改后,我尝试将表添加回 DBML 设计器界面,但 Visual Studio 没有执行任何操作。当我尝试从服务器资源管理器中的列表中拖动表时,我没有看到指示它正在尝试拖放操作的箭头。我尝试将其他几个表从服务器资源管理器拖到设计器中,但无济于事。我没有收到错误。

我还尝试更新驻留在同一解决方案中的另一个项目中的数据集,并且得到相同的结果。Visual Studio 2010 不允许我将表从服务器资源管理器拖动到 XSD 或 DBML 文件的设计器界面。

到目前为止我已经尝试过以下操作

1) Close all windows in VS
2) Restart VS
3) Restart PC
4) Revert DBML to earlier versions
Run Code Online (Sandbox Code Playgroud)

有什么建议么?这在周五工作得很好,我没有改变框架中的任何重要内容。

也尝试了以下两件事:删除用户选项文件并重新启动 VS 并使用 DataSet 创建新项目并尝试从服务器资源管理器中拖动表。两者都失败了。

c# xsd dataset visual-studio-2010 linq-to-sql

2
推荐指数
1
解决办法
7396
查看次数

ObjectListView不显示所选项目的选择颜色

我有一个ObjectListView基本上是标准.NET的包装器ListView.我的问题是我无法找出正确的方法调用序列,以向控件添加新对象,滚动控件以确保对象可见,并选择对象.下面,是我的代码实现这一点.一切正常,但由于某种原因,在我点击或重新调整其中一列之前,所选项目/对象的背景颜色不会显示.我不确定控件是否没有被聚焦或是什么.

// objectListViewItems is of type BrightIdeasSoftware.ObjectListViewItems
objectListViewItems.AddObject(e.InsertedItem);
objectListViewItems.Refresh();
objectListViewItems.Focus();
objectListViewItems.EnsureModelVisible(e.InsertedItem);
objectListViewItems.SelectedObject = e.InsertedItem;
objectListViewItems.Focus();
Run Code Online (Sandbox Code Playgroud)

下面的代码更新了ObjectListView中的一个项目,并且运行正常.不确定我上面做错了什么......

objectListViewItems.RefreshObject(itemToEdit);
objectListViewItems.Focus();
objectListViewItems.SelectObject(itemToEdit);
Run Code Online (Sandbox Code Playgroud)

c# listview winforms objectlistview

1
推荐指数
1
解决办法
2521
查看次数

为什么SQL触发器不按顺序插入行?

最近我继承了一个新的ASP网络应用程序,它只允许客户在线支付他们的未付发票.该应用程序设计不佳,没有付款历史记录表.整个付款表由Web服务删除,该服务将付款记录传输到记录的会计系统.

我刚刚在Payments表上创建了一个简单的触发器,它只是将Payments表中的数据复制到Payment_Log表中.最初,触发器只是插入了select*on来复制数据.但是,我刚刚修改了触发器,将付款日期插入到Payment_Log表中,因为我们的一个客户遇到了一些我需要调试的问题.新触发器如下.我的问题是我注意到,使用这个新版本的触发器,行被插入到表的中间(即不在末尾).有人可以解释为什么会这样吗?

ALTER trigger [dbo].[PaymentHistory] on [dbo].[Payments]
for insert as

Declare @InvoiceNo nvarchar(255),
    @CustomerName nvarchar(255),
    @PaymentAmount float,
    @PaymentRefNumber nvarchar(255),
    @BulkPaid bit,
    @PaymentType nvarchar(255),
    @PaymentDate datetime

Select @InvoiceNo = InvoiceNo,
   @CustomerName = CustomerName,
   @PaymentAmount = PaymentAmount,
   @PaymentRefNumber = PaymentRefNumber,
   @BulkPaid = BulkPaid,
   @PaymentType = PaymentType
from inserted

Set @PaymentDate = GETDATE()

Insert into Payment_Log 
values (@InvoiceNo, @CustomerName, @PaymentAmount, @PaymentRefNumber, @BulkPaid, @PaymentType, @PaymentDate)
Run Code Online (Sandbox Code Playgroud)

下面是SQL Server Management Studio的屏幕截图,显示了插入到表数据中间的行.在此先感谢帮助人员.

在此输入图像描述

sql t-sql database triggers

0
推荐指数
1
解决办法
1344
查看次数

在打印前调整 MSChart 的大小以适合页面大小

我正在努力弄清楚如何在打印时让 MSChart 填满整个页面。有人可以告诉我为什么下面的代码不起作用和/或建议另一种方法。我为我的无知表示歉意,但到目前为止我所做的所有打印都是通过 Crystal 和其他报告框架完成的,所以我通常不必直接使用 PrintDialog 和 PrintPreviewDialog。提前致谢。

// Printing Code
Size pageSize = new Size(this.Chart.Printing.PrintDocument.DefaultPageSettings.PaperSize.Width, this.Chart.Printing.PrintDocument.DefaultPageSettings.PaperSize.Height);
this.Chart.Size = pageSize;

// This properly previews my chart but, it does not fill up the page                    
this.Chart.Printing.PrintPreview();
Run Code Online (Sandbox Code Playgroud)

c# printing charts winforms

0
推荐指数
1
解决办法
2965
查看次数