public void CreateFigureIdentityAttribute(FieldBuilder field, FigureIdentityAttribute attrib) { field.SetCustomAttribute(new CustomAttributeBuilder(figureIdentityCtor, Type.EmptyTypes, new FieldInfo[] { typeof(FigureIdentityAttribute).GetField("Order"), typeof(FigureIdentityAttribute).GetField("IsAutoincrement") }, new object[] { attrib.Order, attrib.IsAutoincrement })); }
private void resolveFigureIdentityAttributes(FieldBuilder fb, MemberInfo mi, MemberRubric mr) { if (!mr.IsKey) { object[] o = mi.GetCustomAttributes(typeof(FigureIdentityAttribute), false); if (o != null && o.Any()) { FigureIdentityAttribute fia = (FigureIdentityAttribute)o.First(); mr.IsIdentity = true; mr.IsAutoincrement = fia.IsAutoincrement; if (Identities.ContainsKey(fia.Order)) { fia.Order = (short)(Identities.LastOrDefault().Key + 1); } mr.IdentityOrder = fia.Order; Identities.Add(mr.IdentityOrder, mr); if (fb != null) { CreateFigureIdentityAttribute(fb, fia); } } else if (mr.IsIdentity) { if (Identities.ContainsKey(mr.IdentityOrder)) { mr.IdentityOrder += (short)(Identities.LastOrDefault().Key + 1); } Identities.Add(mr.IdentityOrder, mr); if (fb != null) { CreateFigureIdentityAttribute(fb, new FigureIdentityAttribute() { IsAutoincrement = mr.IsAutoincrement, Order = mr.IdentityOrder }); } } } }