我是 FakeXrmEasy 世界的新手,并试图在另一个团队编写的大型现有代码库中实现一些单元测试:)
我在 OnPremise DynamicsCRM 应用程序中设置了一个实体,该实体具有以下属性:
[Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("statuscode")]
public Microsoft.Xrm.Sdk.OptionSetValue statuscode
{
get
{
return this.GetAttributeValue<Microsoft.Xrm.Sdk.OptionSetValue>("statuscode");
}
set
{
this.OnPropertyChanging("statuscode");
this.SetAttributeValue("statuscode", value);
this.OnPropertyChanged("statuscode");
}
}
/// <summary>
/// Invoice
/// </summary>
[Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("invoiceid")]
public Microsoft.Xrm.Sdk.EntityReference InvoiceId
{
get
{
return this.GetAttributeValue<Microsoft.Xrm.Sdk.EntityReference>("invoiceid");
}
set
{
this.OnPropertyChanging("InvoiceId");
this.SetAttributeValue("invoiceid", value);
this.OnPropertyChanged("InvoiceId");
}
}
所以我的 InvoiceId 是一个 EntityReference 并且我的 statuscode 属性是一个 OptionSetValue 类型。我有一个查询要返回与 InvoiceId && statuscode != X 匹配的实体,但在发票 id 匹配的地方返回记录,但如果 statuscode.Value == X 也返回记录,因此仅应用 where 的第一部分或第二部分失败但结果仍然添加。
我的查询是:
var result = (from qa in ctx.allocationSet
where qa.InvoiceId.Id == invoiceId
&& qa.statuscode.Value != 2
select qa);
所以本质上,如果我在这个集合中填充 2 条记录,1 条带有 InvoiceId abc-123 和 statuscode = 1,然后另一个带有 InvoiceId XYZ-987 和 statuscode = 2,然后搜索 invoiceId XYZ-987 我的查询应该返回零记录但是这个每次返回第二条记录,即使 statuscode.Value ==2?