Example #1
0
        private static string GetTableName(System.Data.Linq.DataContext DB, Type entityType)
        {
            Type tableType    = typeof(System.Data.Linq.Table <>).MakeGenericType(entityType);
            var  propertyInfo = DB.GetType().GetProperties().Where(p => p.PropertyType.IsGenericType && p.PropertyType == tableType).FirstOrDefault();

            if (propertyInfo == null)
            {
                return(string.Empty);
            }
            return(propertyInfo.Name);
        }
        internal static bool DeleteWithCascase <T>(System.Data.Linq.DataContext ctx, T entity) where T : class, INotifyPropertyChanged
        {
            //Get the primary key of the context
            var pkey = GetPrimaryKey <T>();
            //Get foreign keys
            var fkeys = GetForeignKeys <T>();
            //get the model for the ctx
            var model = new AttributeMappingSource().GetModel(ctx.GetType());
            //Get the table for the given entity
            var eTable = ctx.GetTable <T>();

            foreach (var modelTable in model.GetTables())
            {
                //Loop tables and delete
            }

            return(true);
        }
Example #3
0
    internal static void MakeDirty(this System.Data.Linq.DataContext dc, object someEntity)
    {
        //get dc type
        Type dcType = dc.GetType();

        while (dcType != typeof(System.Data.Linq.DataContext))
        {
            dcType = dcType.BaseType;
        }

        //get hold of the CommonDataServices thing in the DC
        System.Reflection.FieldInfo commonDataServicesField
            = dcType.GetField("services", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
        object commonDataServices     = commonDataServicesField.GetValue(dc);
        Type   commonDataServicesType = commonDataServices.GetType();

        //get hold of the change tracker
        System.Reflection.PropertyInfo changeTrackerProperty
            = commonDataServicesType.GetProperty("ChangeTracker", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
        object changeTracker     = changeTrackerProperty.GetValue(commonDataServices, null);
        Type   changeTrackerType = changeTracker.GetType();

        //get the tracked object method
        System.Reflection.MethodInfo getTrackedObjectMethod
            = changeTrackerType.GetMethod("GetTrackedObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
        object trackedObject = getTrackedObjectMethod.Invoke(changeTracker, new object[] { someEntity });

        //get the ConvertToModified method
        Type trackedObjectType = trackedObject.GetType();

        System.Reflection.MethodInfo convertToModifiedMethod
            = trackedObjectType.GetMethod("ConvertToModified", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

        //call the convert to modified method
        convertToModifiedMethod.Invoke(trackedObject, null);
    }