我有3个班级A,B和AB。 A类和B类都是相互独立的。但AB依赖于A和B.我希望使用实体框架代码优先实现A和B之间的“零或一对一或一”关系。
有人可以告诉我为什么这不起作用?还是我完全错了?谢谢!
id<MTLRenderCommandEncoder> encoder = [commandBuffer renderCommandEncoderWithDescriptor:renderPassDescriptor];
encoder.label = @"Vertex Render Encoder";
[encoder setRenderPipelineState:metalVertexPipelineState];
// draw main content
NSUInteger vSize = _vertexInfo.metalVertexCount*sizeof(AAPLVertex);
id<MTLBuffer> mBuff = [self.device newBufferWithBytes:_vertexInfo.metalVertices
length:vSize
options:MTLResourceStorageModeShared];
[encoder setVertexBuffer:mBuff offset:0 atIndex:0];
[encoder setVertexBytes:&_viewportSize length:sizeof(_viewportSize) atIndex:1];
[encoder setFragmentTexture:self.inputTexture atIndex:0];
[encoder drawPrimitives:MTLPrimitiveTypeTriangle vertexStart:0 vertexCount:_vertexInfo.metalVertexCount];
[encoder endEncoding];
[commandBuffer presentDrawable:self.currentDrawable];
[commandBuffer commit];
我收到了这个错误:
AB_B_Source ::多重性在关系'AB_B'中的角色'AB_B_Source'中无效。由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为'*'。
AB_A_Source ::多重性在关系'AB_A'中的角色'AB_A_Source'中无效。因为Dependent Role属性不是关键属性, 依赖角色的多重性的上限必须是'*'。
答案 0 :(得分:1)
根据编辑的模型,每个类(A和B)中的导航属性AB可能是问题,因为要指向AB对象,您需要同时使用两个键。 实体AB可能与复合主键映射,并且您应该已经使用该实体中的属性A和B定义了您想要的关系。
让我知道它是否有效, 祝你有愉快的一天