예제 #1
0
 public static void ValidateIdentity(IProjectionIdentity identity)
 {
     if (identity.Field != null && !identity.Schema.Equals(identity.Field.Identity.Schema))
     {
         throw new ProjectionException("Unable to create projection identity. Field schema mismatch.");
     }
 }
예제 #2
0
 internal Projection(IProjectionIdentity identity, IProcContext context, IProjectionMetadata metadata)
 {
     this.Identity   = identity ?? throw ProjectionException.ArgumentNull(nameof(identity));
     this.Context    = context ?? throw ProjectionException.ArgumentNull(nameof(context));
     this.Metadata   = metadata ?? throw ProjectionException.FromAttribute(identity.Schema.Model, null, message: "Projection metadata not found.");
     this.Source     = identity.Field;
     this.Options    = new ProjectionOptions();
     this.Attributes = this.CreateDefaultAttributes(this.Metadata);
 }
예제 #3
0
        public ProcLookupKey(string prefix, IProjectionIdentity identity, MetadataIdentity metadata, IField field)
        {
            this.Prefix   = prefix;
            this.Identity = identity ?? throw new ArgumentNullException(nameof(identity));
            this.Metadata = metadata;
            this.Field    = field;

            if (string.IsNullOrWhiteSpace(this.Prefix))
            {
                throw new ArgumentException("Prefix cannot be empty.");
            }
        }
예제 #4
0
        public ProcLookupKey(string prefix, IProjectionIdentity identity, MetadataIdentity metadata, IField field)
        {
            this.Prefix   = prefix;
            this.Identity = identity;
            this.Metadata = metadata;
            this.Field    = field;
            this.HasValue = (identity != null || metadata != null || field != null);

            if (string.IsNullOrWhiteSpace(this.Prefix))
            {
                throw new ArgumentException("Prefix cannot be empty.");
            }
        }
예제 #5
0
 public string Variable(IProjectionIdentity identity, IField field) => this.Custom("V", identity, field: field);
예제 #6
0
 public string Table(IProjectionIdentity identity, MetadataIdentity metadata) => this.Custom("T", identity, metadata);
예제 #7
0
 public string Parameter(IProjectionIdentity identity, MetadataIdentity metadata) => this.Custom("P", identity, metadata: metadata);
예제 #8
0
 public string Parameter(IProjectionIdentity identity, IField field) => this.Custom("P", identity, field: field);
예제 #9
0
 public string Custom(string prefix, IProjectionIdentity identity, MetadataIdentity metadata = null, IField field = null) => this.FromKey(new ProcLookupKey(prefix, identity, metadata, field));
예제 #10
0
 public Projection(IProjectionIdentity identity, IProcContext context)
     : base(identity, context)
 {
 }
예제 #11
0
 internal Projection(IProjectionIdentity identity, IProcContext context, IProjectionMetadata metadata)
     : base(identity, context, metadata)
 {
 }
예제 #12
0
 public virtual bool Equals(IProjectionIdentity other) => base.Equals(other);