CRM 2016 FakeXrmEasy N:N 关系
CRM 2016 FakeXrmEasy N:N relationships
我正在尝试使用 FakeXrmEasy
为 CRM Online (2016) 执行一些单元测试,但我在设置一个具有 N:N 关系的测试时遇到问题
以下代码设置了一个包含 2 个实体的伪造上下文并初始化了一个伪造组织服务:
var entity1 = new New_entityOne();
var entity2 = new New_entityTwo();
var context = new XrmFakedContext();
context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(New_entityOne));
context.Initialize(new List<Entity>()
{
entity1,
entity2
});
var service = context.GetFakedOrganizationService();
然后我尝试在这些实体之间创建 N:N 关系:
var join = new AssociateRequest
{
Relationship = new Relationship
{
SchemaName = "new_entityOne_new_entityTwo",
PrimaryEntityRole = EntityRole.Referenced
},
Target = entity1.ToEntityReference(),
RelatedEntities = new EntityReferenceCollection
{
entity2.ToEntityReference()
}
};
service.Execute(join);
当我执行此 Request
时,我希望在 entity1
和 entity2
[= 之间的模拟数据中生成 N:N-join 记录18=]
相反,我收到这样的错误:
An exception of type 'System.Exception' occurred in FakeXrmEasy.dll
but was not handled in user code
Additional information: Relationship new_entityOne_new_entityTwo does
not exist in the metadata cache
有没有人试过以这种方式使用这个单元框架?到目前为止,我一直在使用它获得非常好的结果。
显然,这些不是我的实际实体和关系名称
请尝试添加如图所示的假关系here
这是因为 N:1 没有相交 table,连接是通过 EntityReference 执行的,仅此而已,但对于多对多,因为有相交 table,我们现在需要告诉框架如何处理这种情况。
还有一个更新,不再强制使用 ProxyTypesAssembly,只要您使用早期绑定类型,代理类型程序集将来自您的类型 "guessed"。
所以你可以删除这个
context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(New_entityOne));
我需要更新网站上的文档...只要有机会:)
编辑
我正在尝试使用 FakeXrmEasy
为 CRM Online (2016) 执行一些单元测试,但我在设置一个具有 N:N 关系的测试时遇到问题
以下代码设置了一个包含 2 个实体的伪造上下文并初始化了一个伪造组织服务:
var entity1 = new New_entityOne();
var entity2 = new New_entityTwo();
var context = new XrmFakedContext();
context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(New_entityOne));
context.Initialize(new List<Entity>()
{
entity1,
entity2
});
var service = context.GetFakedOrganizationService();
然后我尝试在这些实体之间创建 N:N 关系:
var join = new AssociateRequest
{
Relationship = new Relationship
{
SchemaName = "new_entityOne_new_entityTwo",
PrimaryEntityRole = EntityRole.Referenced
},
Target = entity1.ToEntityReference(),
RelatedEntities = new EntityReferenceCollection
{
entity2.ToEntityReference()
}
};
service.Execute(join);
当我执行此 Request
时,我希望在 entity1
和 entity2
[= 之间的模拟数据中生成 N:N-join 记录18=]
相反,我收到这样的错误:
An exception of type 'System.Exception' occurred in FakeXrmEasy.dll but was not handled in user code
Additional information: Relationship new_entityOne_new_entityTwo does not exist in the metadata cache
有没有人试过以这种方式使用这个单元框架?到目前为止,我一直在使用它获得非常好的结果。
显然,这些不是我的实际实体和关系名称
请尝试添加如图所示的假关系here
这是因为 N:1 没有相交 table,连接是通过 EntityReference 执行的,仅此而已,但对于多对多,因为有相交 table,我们现在需要告诉框架如何处理这种情况。
还有一个更新,不再强制使用 ProxyTypesAssembly,只要您使用早期绑定类型,代理类型程序集将来自您的类型 "guessed"。
所以你可以删除这个
context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(New_entityOne));
我需要更新网站上的文档...只要有机会:)
编辑