我在尝试从DataTable执行SqlBulkCopy时遇到此异常.
Error Message: The given value of type String from the data source cannot be converted to type money of the specified target column.
Target Site: System.Object ConvertValue(System.Object, System.Data.SqlClient._SqlMetaData, Boolean, Boolean ByRef, Boolean ByRef)
Run Code Online (Sandbox Code Playgroud)
我理解错误说的是什么,但我怎样才能获得更多信息,例如行/字段正在发生?数据表由第三方填充,最多可包含200列和最多10k行.返回的列取决于发送给第三方的请求.所有的数据表列是字符串类型.我的数据库中的列不是所有varchar,因此,在执行插入之前,我使用以下代码格式化数据表值(删除非重要代码):
//--- create lists to hold the special data type columns
List<DataColumn> IntColumns = new List<DataColumn>();
List<DataColumn> DecimalColumns = new List<DataColumn>();
List<DataColumn> BoolColumns = new List<DataColumn>();
List<DataColumn> DateColumns = new List<DataColumn>();
foreach (DataColumn Column in dtData.Columns)
{
//--- find the field map that tells …Run Code Online (Sandbox Code Playgroud) 我最近有几种情况需要来自同一个表的不同数据.一个例子是我将遍历每个"交付驱动程序"并为他们要交付的每个客户生成可打印的PDF文件.
在这种情况下,我拉了所有客户并将其存入
List<Customer> AllCustomersList = customers.GetAllCustomers();
Run Code Online (Sandbox Code Playgroud)
当我通过交付驱动程序循环时,我会做这样的事情:
List<Customer> DeliveryCustomers = AllCustomersList.Where(a => a.DeliveryDriverID == DriverID);
Run Code Online (Sandbox Code Playgroud)
我的问题:通过查询List对象比每次查询与传递驱动程序关联的客户记录每次查询数据库更快,我是这样做的吗?
我有一个嵌入在用户控件上的WYSIWYG编辑器,显然会进入一个网页.当我提交页面时,我收到"从客户端检测到一个潜在危险的Request.Form值"异常.在以前的.NET版本中,我只关闭页面的ValidateRequest.
但是,在.NET 4.5中,它似乎具有ValidateRequestMode的属性.当我将其设置为禁用时,我仍然继续收到错误.关于.NET 4.5错误的内容还不多,所以有人知道解决方案吗?
提前致谢.
我正在使用Scott Guthrie的动态LINQ库以及Entity Framework和C#.
我必须根据几个因素将where字符串构建到变量中,然后将字符串变量传递给where子句.出于某种原因,这将有效:
ContactList = ContactList.Where("DateAdded >= @0", DateTime.Parse("12/1/2012"));
Run Code Online (Sandbox Code Playgroud)
但这不起作用
string WhereClause = string.Format("DateAdded >= {0}", DateTime.Parse("12/1/2012"));
ContactList = ContactList.Where(WhereClause);
Run Code Online (Sandbox Code Playgroud)
如前所述,我需要在传递变量的版本中使用它.谁知道为什么第二个不起作用?
提前致谢!
在下面的函数中,在context.SaveChanges()之后,实体PropertyType始终为null.我刚刚使用ObjectContext转换为DBContext(首先是数据库),在更改之前,它工作正常,现在却没有.有什么我想念的吗?
我检查PropertyTypeID并且它被正确写入并存在于db中.所有关系都在db和edmx文件中正确设置.生成的.tt文件将PropertyType对象显示为虚拟对象.这是EF 5.
这是代码(实体属性的非重要分配已被删除):
private ListingTransferDetail BeginListingTransferDetailReport(int PropertyTypeID)
{
ListingTransferDetail transfer_detail = new ListingTransferDetail();
transfer_detail.PropertyTypeID = PropertyTypeID;
using (IDXEntities context = new IDXEntities())
{
context.ListingTransferDetails.Add(transfer_detail);
context.SaveChanges();
TransferProgress += "<br /><br /><strong>" + DateTime.Now + "</strong>: Transfer initialized for property type \"" + transfer_detail.PropertyType.DisplayName + "\".";
}
return transfer_detail;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
编辑
我发现如果我在SaveChanges()之后添加这行代码,它就可以了.但是,这并不理想,我怎样才能使它默认加载实体?
context.Entry(transfer_detail).Reference(a => a.PropertyType).Load();
Run Code Online (Sandbox Code Playgroud)
再次感谢.
我需要设置一个每分钟运行一次的自动化任务,并在队列中发送电子邮件.我正在使用ASP.NET 4.5和C#.目前,我使用一个从global.asax开始的调度程序类,并使用缓存和缓存回调.我读过这会导致几个问题.
我这样做的原因是因为这个应用程序在多个负载平衡的服务器上运行,这使我可以在一个地方执行,即使一个或多个服务器处于脱机状态,代码也会运行.
我正在寻找一些方向来改善它.我读过Quartz.NET但从未使用过它.Quartz.NET是否从应用程序中调用方法?还是从Windows服务?还是来自网络服务?
我还读过有关使用Windows服务的内容,但据我所知,这些服务直接安装在服务器上.问题是,我需要执行任务,无论有多少服务器在线并且不想复制它.例如,如果我在服务器1和服务器2上设置了计划任务,它们将一起运行,从而复制请求.但是,如果服务器1处于脱机状态,我需要服务器2来运行该任务.
关于如何在这里前进的任何建议或者global.asax方法是多服务器环境的最佳方式吗?顺便说一下,Web服务器正在运行带有IIS 8的Win Server 2012.
编辑
在请求更多信息时,队列存储在数据库中.我还应该提到数据库服务器与Web服务器是分开的.有两个数据库服务器,但一次只能运行一个.他们都读取了一个中央存储,因此只有一个数据库实例.当一个数据库服务器出现故障时,另一个数据库服
话虽如此,将Windows服务部署到两个数据库服务器会更有意义吗?这样可以确保一次只运行一个.
另外,您对从应用程序运行Quartz.NET有何看法?正如millimoose所提到的,我并不一定需要在Web前端运行它,但这样做可以让我不将Windows服务部署到多台机器上,我认为不会出现性能差异.思考?
感谢大家到目前为止的输入.如果需要任何其他信息,请告诉我.
如何确定列表A是否以相同的顺序包含列表B中的所有元素?
列表A可以具有列表B不具有的其他元素,但必须按照列表B具有它们的顺序包含列表B的所有元素.
实施例1(A组结尾...,4,0, 6):
List A: List B:
5 2
9 3
2 4
3
4
0
6
Run Code Online (Sandbox Code Playgroud)
这应该返回True.
实施例2(A组结尾...,0,4,6):
List A: List B:
5 2
9 3
2 4
3
0
4
6
Run Code Online (Sandbox Code Playgroud)
这应该返回False.
我从JonSkeet中找到了这个答案,看看列表A是否包含列表B中的所有元素,但这并不要求它们具有相同的顺序.
是否可以使用实体框架比较 where 子句中的字节数组?
我有一个这样的字节列表:
List<byte[]> VisitorIDList
Run Code Online (Sandbox Code Playgroud)
我需要提取一些这样的数据:
var VisitorList = context.Visitors
.Where(a => VisitorIDList.Contains(a.VisitorID))
.ToList();
Run Code Online (Sandbox Code Playgroud)
该VisitorID字段被byte[]EF解释为 a 。我不能使用该SequenceEqual()方法,因为它不会转换为 SQL 并且Contains不会匹配记录。所以我只是为此使用 EF 的 SOL 吗?
我知道我可以做这样的事情:
var VisitorList = context.Visitors
.ToList()
.Where(a => VisitorIDList.Any(b => b.SequenceEqual(a.VisitorID)))
.ToList();
Run Code Online (Sandbox Code Playgroud)
但显然这是不切实际的。我正在使用 C#、.NET 4.5 和 EF 6。
假设我有一个包含多个h2标签的页面.我想获得所有没有 css类的h2标签.
所以在这个例子中:
<h2>Headline 1</h2>
<p>content 1</p>
<h2 class="some-class">Headline 2</h2>
<p>content 2</p>
<h2>Headline 3</h2>
<p>content 3</p>
<h2 class="another-class">Headline 4</h2>
<p>content 4</p>
Run Code Online (Sandbox Code Playgroud)
我想在上面的例子中将h2元素包装成"Headline 1"和"Headline 3".
这样做:
var h2_tags = $("h2");
Run Code Online (Sandbox Code Playgroud)
将导致获得所有H2,这是我不想要的.我怎样才能得到没有任何CSS类的?
我想获得一些关于将整个对象存储到会话中的想法的反馈?例如,客户对象.一旦客户登录其控制面板,而不是每次需要从会话中存储的ID重新获取数据时,将整个客户对象存储在会话中的优缺点是什么?
因此,只要您需要引用客户对象,您就可以:
Customer c = (Customer)Session["objCustomer"];
Run Code Online (Sandbox Code Playgroud)
显然,您需要检查并具有刷新会话的功能.您需要在空会话或更新后运行此函数.
除此之外,还有其他问题我应该注意这样做吗?就编程而言,这似乎会好得多,而且对数据库的调用也要少得多.想什么?
c# ×9
asp.net ×4
linq ×4
.net-4.5 ×1
automation ×1
database ×1
datatable ×1
dbcontext ×1
dynamic-linq ×1
exception ×1
iis ×1
javascript ×1
jquery ×1
lazy-loading ×1
list ×1
oop ×1
performance ×1
session ×1
sqlbulkcopy ×1
string ×1