我有一些代码最近从EF 4.2升级到EF 5.0(实际上是EF 4.4,因为我在.Net 4.0上运行).我发现我必须改变查询的语法,我很好奇为什么.让我从问题开始吧.
我有一个EventLog表,由客户端定期填充.对于每个事件日志,将在"报告"表中创建一个条目.这是定期运行的查询,用于发现尚未在"报告"表中包含条目的任何事件日志.我在EF 4.2中使用的查询是:
from el in _repository.EventLogs
where !_repository.Reports.Any(p => p.EventLogID == el.EventlogID)
Run Code Online (Sandbox Code Playgroud)
从升级到EF 5.0后,我在运行时收到以下错误:
System.NotSupportedException:无法创建"Namespace.Report"类型的常量值.在此上下文中仅支持基元类型或枚举类型.
我发现使用join语法重写它可以解决问题.以下适用于EF 5.0,大致相当于:
from eventLog in _repository.EventLogs
join report in _repository.Reports on eventLog.EventlogID equals report.EventLogID into alreadyReported
where !alreadyReported.Any()
Run Code Online (Sandbox Code Playgroud)
有些人可能对第一个查询的混合语法/样式有不同的看法,但我真的对这个原因更感兴趣.看起来奇怪的是EF 4.2编译器可以为原始查询生成SQL但是EF 5.0拒绝了.这是我缺少的设置还是两者之间的约束?为什么会这样?
我仍然是EDI的新手,并且在新工作中学习它.我们正在使用BizTalk作为我们的EDI解决方案,并将传入的EDI文件转换为XML.我遇到了来自新供应商的文件问题,并且最初认为该文件可能不正确.我已经知道文件是正确的,但是我们当前的XML模式是本土的,并且基本上需要定制以接受这个856.我想传入的一些数据比我们通常的供应商传递给我们的更多(尽管根据EDI X12 856仍然有效).
虽然我可以做到这一点,但真正的答案似乎是获取实际EDI规范的xsd文件.似乎已经存在这种标准化格式.有谁知道这样的东西是否可用?
更新:事实证明,有一个内置的EDI映射功能,通过"EDI反汇编程序"组件在管道中完成.这将转换为标准化的BizTalk EDI架构并正常运行.显然,我们的代码然后将该XML转换为我们自己的XML模式.肯定有改进的空间,但我认为关于架构标准的信息是我现在正在寻找的.
有没有办法自动打开或关闭BizTalk中的接收位置?似乎应该有某种API或某些类似的东西.我更喜欢在C#中工作,但WMI或某种脚本也可以工作.
我对收据底部的条形码有疑问.我正在寻找围绕它编写一些软件,并且会对它周围的任何规格或第三方软件包感兴趣.我真正需要的是这些系统的可靠信息来源.
我的理解是,大多数销售点系统都支持在收据底部打印条形码.条形码包含哪些信息?我假设收据上的信息,如购买的物品,物品成本,日期等?
是否存在单一的规范,所有这些规范都遵循或从销售点系统到销售点系统各不相同?
基本上我的问题源于希望文本框部分为白色,而下拉为黑色.当我将文本设置为白色时,下拉按照我的要求显示,但文本框中的文本本身几乎无法读取.将前景设置为黑色会使下拉不可读.
有没有一个好方法来处理这个?我还在学习WPF.
我有一个用户提供ID的ASP.NET页面,然后我们从数据库中提取一些数据并将其放入Excel电子表格中.我想在内存中创建Excel文件,然后允许用户下载该文件.我可以在服务器上创建一个文件,然后删除它,但似乎没必要.根据错误处理,我可能使用该方法孤立文件等.
这样的事情可能吗?或者我需要使用文件流吗?
另外,我正在使用EPPlus作为API(快速插件).
这个前提非常简单,但我似乎无法确定如何在linq中描述这一点.我正在使用EF,我应该能够在一个查询中提取数据.
我有一个用户对象具有以下(简化):
public class User
{
public DateTime addDate;
public int status;
bool isActive
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个报告,该报告采用显示以下列的日期范围(即startDate/endDate):

(数字不加,只是为了表演)
第一列是数据按日期分组的日期.第二个是当时已添加到系统的用户数的运行总计.其余的是首先由isActive bool分解用户,然后按状态分解.
我是否可以向SO的一位知识渊博小组寻求帮助?我可以将数据拉入并在代码中执行,但这不是最佳的.我想了解如何在linq中完成这项工作.
==================================
编辑:我意识到有一件我不清楚.这些数字并不反映当天加入的成员数量,而是迄今为止的总数.我相信我可能正在寻找一个聚合,但我不确定.也许一笔钱也可以.
因此,在该示例中,截至2014年1月13日,有297个具有13或更早的addDate.2014年1月14日,没有成员被添加,最后在2014年1月15日增加了三个用户,总共300个用户.