1: internal class ManyToManyClassType:IDataType
2: {
3: public ManyToManyClassType(Attribute Attribute, Class Class, ClassManager Manager)
4: : base(Attribute)
5: {
6: Type MappedType = Attribute.Type.GetGenericArguments()[0];
7: Class MappedClass = Manager[MappedType];
8: _Class = Class;
9: _Manager = Manager;
10: _MappedClass = MappedClass;
11:
12: MappedIDField = GlobalFunctions.GetSQLType(MappedClass.IDField, MappedClass, Manager);
13: IDField = GlobalFunctions.GetSQLType(Class.IDField, Class, Manager);
14: IDField.Constraints.Clear();
15: MappedIDField.Constraints.Clear();
16: }
17:
18: public IDataType IDField { get; set; }
19: public IDataType MappedIDField { get; set; }
20: public Class _Class = null;
21: public Class _MappedClass = null;
22: public ClassManager _Manager = null;
23:
24: public override string CreateTableCommand()
25: {
26: StringBuilder Builder = new StringBuilder("CREATE TABLE " + Attribute.MappedProperty + "(" + Name + "ID int IDENTITY,");
27: Builder.Append(_Class.OriginalType.Name + "_" + IDField.CreateTableCommand() + ",");
28: Builder.Append(_MappedClass.OriginalType.Name + "_" + MappedIDField.CreateTableCommand());
29: Builder.Append(", PRIMARY KEY(" + Name + "ID)");
30: Builder.Append(")");
31: return Builder.ToString();
32: }
33:
34: public override string CreateInsertCommand()
35: {
36: StringBuilder Builder = new StringBuilder("EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE dbo." + Attribute.MappedProperty + "_Insert\n");
37: Builder.Append(IDField.CreateStoredProcedureParameter(false, true).Replace("@", "@" + _Class.OriginalType.Name + "_") + ",\n");
38: Builder.Append(MappedIDField.CreateStoredProcedureParameter(false, true).Replace("@", "@" + _MappedClass.OriginalType.Name + "_"));
39: Builder.Append("\nAS\nINSERT INTO " + Attribute.MappedProperty + "(");
40: Builder.Append(_Class.OriginalType.Name + "_" + IDField.Name + ",");
41: Builder.Append(_MappedClass.OriginalType.Name + "_" + MappedIDField.Name + ") VALUES (");
42: Builder.Append("@"+_Class.OriginalType.Name + "_" + IDField.Name + ",");
43: Builder.Append("@" + _MappedClass.OriginalType.Name + "_" + MappedIDField.Name + ")\nRETURN'\n");
44: return Builder.ToString();
45: }
46:
47: public override string CreateDeleteCommand()
48: {
49: StringBuilder Builder = new StringBuilder("EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE dbo." + Attribute.MappedProperty + "_Delete_" + _Class.OriginalType.Name + "\n");
50: StringBuilder MappedBuilder = new StringBuilder("EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE dbo." + Attribute.MappedProperty + "_Delete_" + _MappedClass.OriginalType.Name + "\n");
51:
52: Builder.Append(IDField.CreateStoredProcedureParameter(false, true).Replace("@", "@" + _Class.OriginalType.Name + "_") + ",\n");
53: MappedBuilder.Append(MappedIDField.CreateStoredProcedureParameter(false, true).Replace("@", "@" + _MappedClass.OriginalType.Name + "_"));
54:
55: Builder.Append("\nAS\nDELETE FROM " + Attribute.MappedProperty + " WHERE ");
56: MappedBuilder.Append("\nAS\nDELETE FROM " + Attribute.MappedProperty + " WHERE ");
57:
58: Builder.Append(_Class.OriginalType.Name + "_" + IDField.Name + "=");
59: Builder.Append("@" + _Class.OriginalType.Name + "_" + IDField.Name + "\nRETURN'\n");
60:
61: MappedBuilder.Append(_MappedClass.OriginalType.Name + "_" + MappedIDField.Name + "=");
62: MappedBuilder.Append("@" + _MappedClass.OriginalType.Name + "_" + MappedIDField.Name + "\nRETURN'\n");
63:
64: return Builder.ToString() + MappedBuilder.ToString();
65: }
66:
67: public override string CreateSelectCommand()
68: {
69: StringBuilder Builder = new StringBuilder("EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE dbo." + Attribute.MappedProperty + "_Select_" + _Class.OriginalType.Name + "\n");
70: StringBuilder MappedBuilder = new StringBuilder("EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE dbo." + Attribute.MappedProperty + "_Select_" + _MappedClass.OriginalType.Name + "\n");
71:
72: Builder.Append(IDField.CreateStoredProcedureParameter(false, true).Replace("@", "@" + _Class.OriginalType.Name + "_") + "\n");
73: MappedBuilder.Append(MappedIDField.CreateStoredProcedureParameter(false, true).Replace("@", "@" + _MappedClass.OriginalType.Name + "_") + "\n");
74:
75: Builder.Append("\nAS\nSELECT "+_Class.OriginalType.Name+"_"+IDField.Name+","+_MappedClass.OriginalType.Name+"_"+MappedIDField.Name+" FROM "+Attribute.MappedProperty);
76: Builder.Append(" WHERE "+_Class.OriginalType.Name+"_"+IDField.Name+"=@"+_Class.OriginalType.Name+"_"+IDField.Name);
77:
78: MappedBuilder.Append("\nAS\nSELECT " + _Class.OriginalType.Name + "_" + IDField.Name + "," + _MappedClass.OriginalType.Name + "_" + MappedIDField.Name + " FROM " + Attribute.MappedProperty);
79: MappedBuilder.Append(" WHERE " + _MappedClass.OriginalType.Name + "_" + MappedIDField.Name + "=@" + _MappedClass.OriginalType.Name + "_" + MappedIDField.Name);
80:
81: Builder.Append("\nRETURN'\n");
82: MappedBuilder.Append("\nRETURN'\n");
83: return Builder.ToString() + MappedBuilder.ToString();
84: }
85: }