private void Initialize() { if (BsonClassMap.IsClassMapRegistered(typeof(TEntity))) { return; } var identityName = IdentitySelector.GetMemberInfo().Name; BsonClassMap.RegisterClassMap <TEntity>(cm => { cm.AutoMap(); if (cm.IdMemberMap == null) { cm.SetIdMember(cm.GetMemberMap(identityName)); if (_keyTypeToBsonType.ContainsKey(typeof(TIdentity)) && (_keyTypeToBsonGenerator.ContainsKey(typeof(TIdentity)))) { cm.IdMemberMap.SetRepresentation(_keyTypeToBsonType[typeof(TIdentity)]); cm.IdMemberMap.SetIdGenerator(_keyTypeToBsonGenerator[typeof(TIdentity)]); } } cm.Freeze(); }); }
private ISpecification <TEntity> ByIdentitySpecification(TIdentity identity) { var parameter = Expression.Parameter(typeof(TIdentity), "identity"); var equalsBinaryExpression = Expression.Equal(IdentitySelector.Body, Expression.Constant(identity)); var equalsExpression = Expression.Lambda <Func <TIdentity, bool> >(equalsBinaryExpression, parameter); var predicateExpression = IdentitySelector.Combine(equalsExpression); return(new ExpressionSpecification <TEntity>(predicateExpression)); }