/// <summary> /// 判断是否不需要加载。 /// </summary> /// <param name="identifier"></param> /// <returns></returns> protected bool CheckWithoutLoading(IInstanceIdentifier identifier) { if (identifier is EntityContextOptions options && options.LoadBehavior == LoadBehavior.None) { return(true); } return(false); }
/// <summary> /// 尝试将 <see cref="IInstanceIdentifier"/> 实例添加到管理器,并返回一个实例名。如果管理器中已有该实例,则返回原有的实例名。 /// </summary> /// <param name="identification"></param> /// <returns></returns> public static string TryAdd(IInstanceIdentifier identification) { lock (_instances) { var item = _instances.FirstOrDefault(s => s.Value.Equals(identification)); if (!string.IsNullOrEmpty(item.Key)) { return(item.Key); } var key = RandomGenerator.Create(); _instances.TryAdd(key, identification); return(key); } }
public IEnumerable <MInstance> ResolveInstances(KPsystem kp, IInstanceIdentifier identifier) { List <MInstance> instances = new List <MInstance>(); if (identifier is InstanceIdentifier) { InstanceIdentifier ident = identifier as InstanceIdentifier; if (ident.Indicator == InstanceIndicator.TYPE) { foreach (MType type in kp.Types) { if (type.Name == ident.Value) { instances.AddRange(type.Instances); } } } } //solve if instance identifier is complex (i.e. includes more than one basic identifier) return(instances); }
private void writeInstanceIdentifier(IInstanceIdentifier instanceIdentifier) { owt.Write("{"); if (instanceIdentifier is InstanceIdentifier) { InstanceIdentifier iid = instanceIdentifier as InstanceIdentifier; owt.Write("\"indicator\":"); writeInstanceIndicator(iid.Indicator); owt.Write(", \"value\":\"" + iid.Value + "\""); } else if (instanceIdentifier is CompoundInstanceIdentifier) { CompoundInstanceIdentifier ciid = instanceIdentifier as CompoundInstanceIdentifier; owt.Write("\"lhs\":"); writeInstanceIdentifier(ciid.Lhs); owt.Write(",\"op\":"); writeIIOperator(ciid.Operator); owt.Write("\"rhs\":"); writeInstanceIdentifier(ciid.Rhs); } owt.Write("}"); }
public static LinkRule LinkDestroy(Multiset ms, IInstanceIdentifier tar) { return(new LinkRule(RuleType.LINK_DESTRUCTION, ms, tar)); }
public static LinkRule LinkCreate(Multiset ms, IInstanceIdentifier tar) { return(new LinkRule(RuleType.LINK_CREATION, ms, tar)); }
private LinkRule(RuleType t, Multiset ms, IInstanceIdentifier tar) : base(ms) { type = t; Target = tar; }
public CompoundInstanceIdentifier(IIOperator op, IInstanceIdentifier lhs, IInstanceIdentifier rhs) { Operator = op; Lhs = lhs; Rhs = rhs; }
public TargetedMultiset(IInstanceIdentifier identifier) { multiset = new Multiset(); target = identifier; }
/// <summary> /// 尝试从 <see cref="IInstanceIdentifier"/> 实例中获取 <see cref="IProviderService"/> 实例。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="identification"></param> /// <returns></returns> public static T GetProviderService <T>(this IInstanceIdentifier identification) where T : class, IProviderService { return(identification.ServiceProvider.TryGetService(() => identification.Provider.GetService <T>())); }
/// <summary> /// 初始化 <see cref="ContextServiceContext"/> 类的新实例。 /// </summary> /// <param name="identifier"></param> public ContextServiceContext(IInstanceIdentifier identifier) { ServiceProvider = identifier.ServiceProvider; ContextType = identifier.ContextType; Options = (EntityContextOptions)identifier; }