问题
I'm trying to use FakeXrmEasy
to perform some unit tests for CRM Online (2016) and I'm having problems setting up one of my tests with an N:N relationship
The following code sets up a Faked Context with 2 entities in it and initializes a Faked Organization Service:
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();
I then try to create an N:N relationship between these entities:
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);
When I execute this Request
, I'm expecting a N:N-join record to be produced in my mock data, between entity1
and entity2
Instead I'm getting an error like this:
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
Has anyone else tried using this unit framework in this way? Up until this point I have been getting really good results using it.
obviously, these are not my actual entity and relationship names
回答1:
Please try adding a fake relationship as shown here
This is because for N:1 there's no intersect table, joins are performed via an EntityReference and that's it, but for many to many, as there is an intersect table, we need to tell the framework how to deal with this scenario for now.
There was also an update where it is no longer mandatory to use ProxyTypesAssembly, as long as you use early bound types, the proxy types assembly will be "guessed" from your types.
So you could remove this
context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(New_entityOne));
I'll need to update the documentation in the web site... whenever I have a chance :)
Edit
Web site updated: http://dynamicsvalue.com/get-started/nn-relationships
来源:https://stackoverflow.com/questions/37317808/crm-2016-fakexrmeasy-nn-relationships