Пример #1
0
        internal static QDataDataContext CreateDataContext()
        {
            QDataDataContext newContext;
            string           ConnStr;

            ConnStr    = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            newContext = new QDataDataContext(ConnStr);
            return(newContext);
        }
Пример #2
0
        public List <TEntityType> SaveEntities <TEntityType, TKeyType>(List <TEntityType> EntitiesToSave, string KeyFieldName)
        {
            List <TEntityType> EntitiesToPossiblyUpdate;
            List <TEntityType> EntitiesToInsert;
            List <TEntityType> HandledEntities = new List <TEntityType>();

            bool TimeStampEntity;
            Type ActualFieldType;

            if (EntitiesToSave.Count > 0)
            {
                TimeStampEntity = Base.EntityContainsTimeStamp(typeof(TEntityType), ContextForUpdate);
                ActualFieldType = EntitiesToSave.FirstOrDefault().GetPropertyType(KeyFieldName);
                if (ActualFieldType != typeof(TKeyType))
                {
                    throw new Exception("The UniqueFieldType[" + typeof(TKeyType).Name + "] specified does not match the actual field Type[" + ActualFieldType.Name + "]");
                }
                if (ActualFieldType == typeof(string))
                {
                    EntitiesToPossiblyUpdate = EntitiesToSave.Where(ent => string.IsNullOrEmpty(ent.GetPropertyValue <string>(KeyFieldName)) == false).ToList();
                    EntitiesToInsert         = EntitiesToSave.Where(ent => string.IsNullOrEmpty(ent.GetPropertyValue <string>(KeyFieldName)) == true).ToList();
                }
                else
                {
                    EntitiesToPossiblyUpdate = EntitiesToSave.Where(ent => EqualityComparer <TKeyType> .Default.Equals(ent.GetPropertyValue <TKeyType>(KeyFieldName), default(TKeyType)) == false).ToList();
                    EntitiesToInsert         = EntitiesToSave.Where(ent => EqualityComparer <TKeyType> .Default.Equals(ent.GetPropertyValue <TKeyType>(KeyFieldName), default(TKeyType)) == true).ToList();
                }
                if (EntitiesToPossiblyUpdate.Count > 0)
                {
                    EntitiesToInsert.AddRange(ResolveUpdatesReturnInserts <TEntityType, TKeyType>(EntitiesToPossiblyUpdate, KeyFieldName));
                    HandledEntities.AddRange(EntitiesToPossiblyUpdate.Where(ent => EntitiesToInsert.Select(eti => eti.GetPropertyValue <TKeyType>(KeyFieldName)).Contains(ent.GetPropertyValue <TKeyType>(KeyFieldName)) == false));
                }
                if (EntitiesToInsert.Count > 0)
                {
                    ContextForUpdate.GetTable(typeof(TEntityType)).InsertAllOnSubmit(EntitiesToInsert);
                    HandledEntities.AddRange(EntitiesToInsert);
                }
                ContextForUpdate.SubmitChanges();
                ContextForUpdate = null;
                return(HandledEntities);
            }
            else
            {
                return(EntitiesToSave);
            }
        }
Пример #3
0
 public DisconnectedEntitySaver()
 {
     ContextForUpdate = Base.CreateDataContext();
 }
Пример #4
0
 internal static bool EntityContainsTimeStamp(Type EntityType, QDataDataContext CurrentContext)
 {
     return(CurrentContext.Mapping.MappingSource.GetModel(CurrentContext.GetType()).GetMetaType(EntityType).DataMembers.Where(dm => dm.IsVersion == true).FirstOrDefault() != null);
 }
Пример #5
0
 internal static string GetPrimaryKeyName(Type EntityType, QDataDataContext CurrentContext)
 {
     return((from m in CurrentContext.Mapping.MappingSource.GetModel(CurrentContext.GetType()).GetMetaType(EntityType).DataMembers where m.IsPrimaryKey == true select m.Name).FirstOrDefault());
 }
Пример #6
0
 internal static string GetTableName(Type EntityType, QDataDataContext CurrentContext)
 {
     return(CurrentContext.Mapping.GetTable(EntityType).TableName);
 }