我们在单个开发者机器和一些客户端上遇到问题.单Linq查询生成两个不同的SQL查询.问题实际上是第二个查询具有firebird不支持的"OUTER APPLY"语句.我们认为这不是代码问题,而是环境问题,但我会粘贴代码.
linq:
AIds = (from x in context.RISK_T_ASSESS_HIST
where (x.ID_RISKOBJECT.HasValue && x.F_CREATEDON >= Freq.StartDate && x.F_CREATEDON <= Freq.EndDate)
group x by x.ID_RISKOBJECT into gr
let lastCreated = gr.Max(p => p.F_CREATEDON)
select new
{
ObjId = gr.Key
,
LastStatus = gr.Where(p => p.F_CREATEDON == lastCreated && p.ID_RISKOBJECT == gr.Key).Select(p => p.F_STATUS).FirstOrDefault()
}).Where(x => x.LastStatus == 0 || x.LastStatus == 1).Select(x => x.ObjId.Value).ToArray();
Run Code Online (Sandbox Code Playgroud)
使用OUTER APPLY的SQL
SELECT
"G"."ID_RISKOBJECT" AS "ID_RISKOBJECT"
FROM (SELECT
"C"."A1" AS "C1",
"C"."K1" AS "ID_RISKOBJECT"
FROM ( SELECT
"E"."ID_RISKOBJECT" …Run Code Online (Sandbox Code Playgroud) 我想移动 EDMX 文件及其所有依赖项(tt、vb、db 自动生成的类)以避免项目根目录中的混乱。只需将其移动到 DataModel 目录即可。
当我这样做时,刷新模型等等一切看起来都很好。我没有从 ctontext.tt 模板中得到任何错误。但是当我运行应用程序并通过第一个 EF DB 调用时,我得到:
MetadataException: 无法加载指定的元数据资源
我试图改变 webconfig 连接字符串
<add name="TransparencyMSD" connectionString="metadata=res://*/BLAHDataModel.csdl..." />
Run Code Online (Sandbox Code Playgroud)
到
<add name="TransparencyMSD" connectionString="metadata=res://*/DataModel/BLAHDataModel.csdl..." />
Run Code Online (Sandbox Code Playgroud)
但是,没有运气:(
我知道我忘记了一些事情,有人会这么好心,至少指点我去哪里看吗?
我在 SO 中搜索了可能的解决方案,但没有人遇到相同的情况。
先感谢您
我对 Moq 感到困惑,我不确定这里有什么问题。
我想测试依赖于 ILeadStorageService 的 LeadService,并且我想以这种方式配置 Moq - 返回与安装程序中传递的 GUID 匹配的对象。
问题出在 Moq Setup/Returns 行中,因为当我将依赖对象替换为其真实实例时 - 测试通过,但完全错误。我不想只测试 LeadService,而不是从属存储。
public LeadService( IConfigurationDbContext configurationDbContext,
ILeadStorageService leadStorageService,
ILeadDeliveryService deliveryService)
{
this.configurationDbContext = configurationDbContext;
this.leadStorageService = leadStorageService;
this.deliveryService = deliveryService;
}
Run Code Online (Sandbox Code Playgroud)
测试方法
public TestLeadResponse ProcessTestLead(TestLeadRequest request)
{
var response = new TestLeadResponse()
{
Status = TestLeadStatus.Ok
};
try
{
var lead = leadStorageService.Get(request.LeadId);
if (lead == null)
{
throw new LeadNotFoundException(request.LeadId);
}
var buyerContract =
configurationDbContext.BuyerContracts.SingleOrDefault(bc => bc.Id == request.BuyerContractId);
if (buyerContract == …Run Code Online (Sandbox Code Playgroud) 我想构建一个函数,用户可以搜索列表中的某些属性是否包含值
假设我们将拥有List,并且Company将被定义为具有以下属性的类:
public class Company
{
public int Id { get; set; }
public string Name { get; set; }
public string CompanyAddress1 { get; set; }
public string CompanyPostCode { get; set; }
public string CompanyCity { get; set; }
public string CompanyCounty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在 - 理想情况下我希望有这个参数的功能
List<Company> FilterCompanies(List<Company> unfilteredList, string fieldToQueryOn, string query)
{
// linq version what ideally would like to archeve
return unfilteredList.Where(x => x."fieldToQueryOn".ToString().ToLower().Contains(query.ToLower())).ToList();
}
Run Code Online (Sandbox Code Playgroud)
并致电:
var variable = FilterCompanies(NotNullFilledUnfilteredList, "CompanyCity", …Run Code Online (Sandbox Code Playgroud) 抱歉愚蠢的问题,但这有点烦人的事情.在c#我可以很快说:
new RolesController().SaveUserRole(Userid, cbxRoles.SelectedIndex);
Run Code Online (Sandbox Code Playgroud)
我不喜欢Long Version,而且SaveUserRole返回void:
RolesController rc = new RolesController()
rc.SaveUserRole(Userid, cbxRoles.SelectedIndex);
Run Code Online (Sandbox Code Playgroud)
问题是:在VB中可以做同样的事情 - "短版"吗?不低于版本......
Dim rc As New RolesController()
rc.SaveUserRole(Userid, cbxRoles.SelectedIndex)
Run Code Online (Sandbox Code Playgroud)