internal static QDataDataContext CreateDataContext() { QDataDataContext newContext; string ConnStr; ConnStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; newContext = new QDataDataContext(ConnStr); return(newContext); }
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); } }
public DisconnectedEntitySaver() { ContextForUpdate = Base.CreateDataContext(); }
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); }
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()); }
internal static string GetTableName(Type EntityType, QDataDataContext CurrentContext) { return(CurrentContext.Mapping.GetTable(EntityType).TableName); }