小编ber*_*hof的帖子

为什么在sql server 2005中使用xml时必须设置ARITHABORT?

为什么在sql server 2005中使用xml时必须设置ARITHABORT?我试着研究为什么我要设置这个,但找不到告诉我原因的答案.只需要设置它.

这是我在取出SET ARITHABORT ON时获得的特定错误消息:

PARAMETER ERROR:INSERT LIST可能无法分配 - INSERT失败,因为以下SET选项的设置不正确:'ARITHABORT'.验证SET选项是否正确,以便与计算列和/或查询通知和/或xml数据类型方法的索引视图和/或索引一起使用.

我的存储过程在一个环境中使用odbc从asp.net调用很好.然后,当我将它移动到另一个时,我必须在存储过程的开头添加SET ARITHABORT ON.我在下面列出了存储过程的相关部分.以及调用它的代码.

CREATE PROCEDURE [dbo].[myproc]
   @ruserid             varchar(8),
   @folder_list         xml,
   @insert_list         xml
AS

SET NOCOUNT ON
SET ARITHABORT ON

DECLARE @rindex integer
DECLARE @errormsg nvarchar(4000)
DECLARE @folder_cnt integer
DECLARE @insert_cnt integer


SET @rindex = -1

-- temp table to hold inserts
CREATE TABLE #insert_list (rowidx integer IDENTITY(1,1), insertdesc varchar(96) COLLATE database_default, insertfolder integer)

-- temp table to hold folders
CREATE TABLE #folder_list (rowidx integer IDENTITY(1,1), folderdesc varchar(144) COLLATE database_default, …
Run Code Online (Sandbox Code Playgroud)

xml sql-server

14
推荐指数
2
解决办法
2万
查看次数

缩短一行像素数

我正在使用.NET GDI +绘制业务对象的自定义图表.除其他外,该图由连接对象的几行组成.

在特定场景中,我需要将一条线缩短一个特定数量的像素,比如说10个像素,即找到线的终点之前10个像素的线上的点.

想象一个半径为r = 10像素的圆,以及一条带有起点(x1,y1)和终点(x2,y2)的直线.圆圈以线的终点为中心,如下图所示.

插图http://i45.tinypic.com/140b5w5.gif

如何计算用红色圆圈标记的点,即圆与线之间的交点?这将为我提供该线的新终点,将其缩短10个像素.


感谢您的答案,我可以将以下程序放在一起.我将它命名为LengthenLine,因为如果我想缩短线条,我发现传递负像素数更自然.

具体来说,我试图组合一个可以绘制圆角线的功能,可以在这里找到.

public void LengthenLine(PointF startPoint, ref PointF endPoint, float pixelCount)
{
  if (startPoint.Equals(endPoint))
    return; // not a line

  double dx = endPoint.X - startPoint.X;
  double dy = endPoint.Y - startPoint.Y;
  if (dx == 0)
  {
    // vertical line:
    if (endPoint.Y < startPoint.Y)
      endPoint.Y -= pixelCount;
    else
      endPoint.Y += pixelCount;
  }
  else if (dy == 0)
  {
    // horizontal line:
    if (endPoint.X < startPoint.X)
      endPoint.X -= pixelCount; …
Run Code Online (Sandbox Code Playgroud)

.net c# geometry drawing gdi+

12
推荐指数
3
解决办法
2819
查看次数

允许最终用户动态地向表中添加列

我们正在开发一个带有SQL Server后端的.NET应用程序.客户端请求在部署应用程序后向实体动态添加自定义属性的能力.

正如在类似问题中所建议的那样,我们可以创建一个表,然后为每个自定义属性值(实体 - 属性 - 值模型)包含一行.但是,我们正在考虑允许最终用户实际修改表(也在同一问题中建议),即添加和删除列.

(编辑:如评论中所述,DDL不会由用户或应用程序直接执行,而是通过存储过程确保一切顺利运行)

主要原因是:

  • 改进了性能/可搜索属性
  • 这些属性几乎总是需要显示为列,例如在用户界面的数据网格中,或者在Excel/PowerPivot中提取数据以进一步处理时.
  • 数据是强类型的(与将所有属性值存储为varchar相反)
  • 简化的数据模型

我们应该注意哪些警告?

想到的事情是:

  • 可能无法处理更改的数据结构的备份/还原操作
  • 未正确更新以反映这些更改的从属对象(如视图)(从属视图必须执行select * from table以包含任何添加的列).
  • ...

关于这种方法的任何意见都非常感谢.

sql-server ddl dynamic entity-attribute-value

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

ADO.NET实体框架中的乐观并发

我找到了一篇MSDN文章,描述了EF在保存更改时如何处理并发:

默认情况下,[...] Object Services将对象更改保存到数据库,而不检查并发性.对于可能经历高度并发性的属性,我们建议在概念层中使用ConcurrencyMode ="fixed"属性定义实体属性

我有两个问题:

  1. 在我的模型中没有属性,我ConcurrencyMode="fixed"可以安全地假设如果OptimisticConcurrencyException在保存更改时抛出了一个,那是因为实体不再存在于数据存储中,即它已被其他用户删除,或者我是遗漏了什么?

    我想EF执行一个UPDATE看起来像这样的-statement,正如我所看到的那样,只有OptimisticConcurrencyException当ID = 1的Person不存在时才会抛出:

    UPDATE Person SET FirstName = 'John' AND LastName = 'Smith' WHERE ID = 1
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用时ConcurrencyMode="fixed",EF在删除实体时是否检查并发性?换句话说,EF是否会执行DELETE看起来像这样的-statement(不仅仅是-clause中的主键WHERE):

    DELETE FROM Person WHERE ID = 1 AND LastName = 'Doe'
    
    Run Code Online (Sandbox Code Playgroud)

.net entity-framework optimistic-concurrency

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

Web Service代理类实现接口

我正在寻找一种方法让生成的Web引用代理类(而不是WCF)实现一个通用接口,以便在客户端应用程序中轻松切换Web服务访问和"直接"访问我们的业务层,如:

public IBusiness GetBusinessObject()
{
  if (_mode = "remote")
    return new BusinessWebService.Business(); // access through web service proxy class
  else
    return new Business(); // direct access
}
Run Code Online (Sandbox Code Playgroud)

但是,CustomSerializableType生成的代理类中未引用自定义类型(例如,下面的示例中的自定义类型).而是生成新的相同类型,这使得代理类无法实现接口.

是否有某种方法可以使生成的代理类引用这些类型,或者我是否认为这一切都错了?我应该考虑将Web服务转换为WCF服务吗?


细节

我们的解决方案包括以下四个项目:

  • 业务库(包含业务逻辑,访问数据存储)
  • 一个通用库(包含常用功能,包括CustomSerializableType)
  • Web服务(充当远程客户端和业务层之间的代理)
  • 一个Windows应用程序

我们的客户希望Windows应用程序能够以两种不同的模式运行:

  • 本地模式,应用程序只是直接使用业务库来访问数据
  • 远程模式,应用程序与Web服务通信以访问数据

为此,我们创建了一个IBusiness接口,它位于公共库中,包含所有业务方法.

接口

public interface IBusiness
{
  CustomSerializableType DoSomeWork();
}
Run Code Online (Sandbox Code Playgroud)

业务层

public class Business : IBusiness
{
  public CustomSerializableType DoSomeWork()
  {
    // access data store
  }
}
Run Code Online (Sandbox Code Playgroud)

网络服务

public class WebServiceBusiness : IBusiness
{
  private Business _business = new …
Run Code Online (Sandbox Code Playgroud)

c# web-services interface proxy-classes asmx

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

SharePoint客户端对象模型中的"编码"登录名

我正在编写一个小型.NET概念验证控制台应用程序,它在SharePoint文档库上执行一系列操作.我注意到以下方法需要一个"编码"登录名 - 即登录名,包括提供者信息,例如i:0#.w|DOMAIN\user.

context.Web.EnsureUser(encodedLoginName);
context.Web.SiteUsers.GetByLoginName(encodedLoginName);
Run Code Online (Sandbox Code Playgroud)

如何DOMAIN\userSharePoint客户端对象模型中可靠地将用户名转换为此编码格式?

我读过一对夫妇博客文章,与解决这一问题SPClaimProviderManager,这是不提供客户端的API中.

.net c# sharepoint-api sharepoint-clientobject sharepoint-2013

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

LINQ to Entities查询中可重用的谓词表达式

在我们的应用程序中,许多不同查询中出现的一组标准已经慢慢变得更加复杂.为了避免重复此代码,我想将这些条件拆分为一个方法,该方法将条件作为表达式返回,然后可以在必要时应用它:

public Expression<Func<Invoice, bool>> GetComplexPredicate()
{
    // complex predicate is returned as an Expression:
    return c => ...
}
Run Code Online (Sandbox Code Playgroud)

重复使用:

var result = repository.Invoice.Where(GetComplexPredicate())
Run Code Online (Sandbox Code Playgroud)

但是,下面的语句不会编译,因为c.Invoice只是一个ICollection.

var result = repository.Customer
    .Where(c => c.Country == "US" && c.Invoice.Any(GetComplexPredicate()))
Run Code Online (Sandbox Code Playgroud)

是否可以使用这样的表达式?

c# linq-to-entities expression entity-framework predicatebuilder

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

Slow search for items using extended property on Exchange

Problem at hand

我们的C#Windows应用程序使用EWS Managed API 2.0在用户的日历中创建约会.每个约会都有一个具有独特价值的扩展属性.它稍后使用FindItems和找到约会ItemView.

用户在第一次执行此搜索时会遇到严重延迟.后续响应时间完全可以接受.

("第一次"在这里有点模糊,因为用户可能会在当天晚些时候再次遇到延迟)

// locate ID of appointment where extended property value equals 1234:
var filter = new Ews.SearchFilter.IsEqualTo(extendedPropertyDefinition, 1234);
var view = new ItemView(1, 0);
view.PropertySet = BasePropertySet.IdOnly;
var folder = new FolderId(WellKnownFolderName.Calendar, new Mailbox("..."));
var result = service.FindItems(folder, filter, view);
Run Code Online (Sandbox Code Playgroud)

远程服务器是Exchange Server 2007 SP1.

研究

MSDN将一些评论与搜索文件夹和受限制的视图联系在一起,但我不确定这些是否适用于我们的情况.

的行为将着眼于一个文件夹中存储将创建搜索文件夹.创建搜索文件夹时,会将其缓存以供以后使用.如果用户尝试创建已存在的搜索文件夹,则使用缓存的搜索文件夹.这使得未来的观看速度相当快.默认情况下,Exchange不会无限期地缓存所有搜索文件夹.

特别是关于EWS:

同样重要的是要注意这样一个事实,即第一次发布Exchange存储搜索查询时,它将非常缓慢地运行并且可能超时,而在将来的运行中它将毫无问题地响应.这是由执行存储搜索时Exchange服务器上发生的后端进程引起的.

他们建议为非变化的非动态查询创建搜索文件夹,这在我们的案例中似乎不合适,因为每个约会的查询都不同.

如果应用程序需要具有一组固定不变参数的特定查询,则可以使用搜索文件夹.[...]搜索文件夹仅对不变的非动态查询有用.

我们需要的是在本质上创建一个"索引" - 在数据库中 - 在属性上,确保所有对这个特定属性的搜索都是快速的,无论时间或频率.

是否有可能"索引"这个属性?是否可以在客户端或服务器端配置任何内容以消除此初始延迟?

c# extended-properties exchange-server-2007 exchangewebservices

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

通过ViewData为DropDownList提供SelectList的强类型视图:提交时类型不匹配

我试图在ASP.NET MVC2 RC 2中创建一个基于日历事件对象的表单.该对象有eventTypeId,它是我需要通过选择列表填充的System.Int32.

用于创建初始视图的控制器是:

[WAuthorize]
public ActionResult AddCalendarEvent()
{
    CalendarEventTypesManager calendarEventTypesManager = 
        new CalendarEventTypesManager();

    ViewData["eventTypeId"] = new SelectList(
        calendarEventTypesManager.SelectAll(), "Id", "Type");

    return View();
}
Run Code Online (Sandbox Code Playgroud)

View的片段(带标题)是:

<%@ Page Title="" Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Extranet.master"
    Inherits="System.Web.Mvc.ViewPage<SomeProject.Models.CalendarEvent>" %>

...

<p><%= Html.DropDownList("eventTypeId") %></p>
Run Code Online (Sandbox Code Playgroud)

哪个结果的HTML:

<p>
<select id="eventTypeId" name="eventTypeId">
    <option value="1">All school activities</option> 
    <option value="2">All school event</option> 
</select>
</p> 
Run Code Online (Sandbox Code Playgroud)

POST接受控制器是:

[WAuthorize]
// TODO research some more
[ValidateInput(false)]              
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult AddCalendarEvent(CalendarEvent newEvent)
{
    ...
Run Code Online (Sandbox Code Playgroud)

(我尝试[Bind (Exclude="eventTypeId")]在"CalendarEvent newEvent"参数前面添加,但它不会改变行为.)

问题:当我提交表单时,我收到一个InvalidOperationException异常:

具有键'eventTypeId'的ViewData项的类型为'System.Int32',但必须是'IEnumerable <SelectListItem>'类型.

我在这里和MVC博客上看了很多例子,但到目前为止还不清楚它应该如何工作(看起来基于很多例子,它应该按原样运行).我是否需要创建第二个具有SelectListItem类型变量的模型来接受SelectListItem并将值转换为System.Int32以实际设置eventTypeId?这似乎相当圆润.

asp.net-mvc post selectlist selectlistitem drop-down-menu

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

发布期间未复制引用的程序集的 xml 文档

当发布引用同一解决方案中的类库(项目)的 ASP.NET 项目 (NET Framework 4.7.1) 时,所有这些项目都在其构建过程中生成了 XML 文档,只有 ASP.NET 项目自己的 XML 文档文件包含在发布的输出。

这些文件对于 Swashbuckle 的 API 文档是必需的。

这只是 VS 发布期间的问题,而不是常规构建的问题。我使用的是 VS Professional 2019 v16.4.2。

如何将引用的类库的 XML 文档文件包含在发布中?这似乎是一个正常的用例,我觉得我错过了一些明显的东西。

我试过了:

  • 在所述项目中包含 XML 文件,并将它们标记为“内容”和“始终复制”到输出目录。不用找了。
  • 更改不同的发布设置,似乎对此没有任何影响

asp.net publish swashbuckle visual-studio-2019

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