/// <summary> /// 通过店铺类型编号查询店铺类型信息 /// </summary> /// <param name="_id">店铺类型编号</param> /// <returns>店铺类型所有信息</returns> public static StoreTypeInfo Select(int _id) { //创建一个shopDBEntities对象 shopDBEntities sde = new shopDBEntities(); //查询 StoreTypeInfo sti = sde.StoreTypeInfo.Where(a => a.STI_ID == _id).FirstOrDefault(); //返回查询结果 return(sti); }
private HelperClassesGenerationInfo CompileMissingClasses(DataTypeDescriptor dataTypeDescriptor, Dictionary <DataTypeDescriptor, IEnumerable <SqlDataTypeStoreDataScope> > allSqlDataTypeStoreDataScopes, Dictionary <SqlDataTypeStoreTableKey, StoreTypeInfo> fields, List <SqlDataTypeStoreDataScope> storeDataScopesToCompile, List <SqlDataTypeStoreDataScope> storeDataScopesAlreadyCompiled) { return(new HelperClassesGenerationInfo { GenerateCodeAction = codeGenerationBuilder => { var sqlDataProviderCodeBuilder = new SqlDataProviderCodeBuilder(_dataProviderContext.ProviderName, codeGenerationBuilder); sqlDataProviderCodeBuilder.AddDataType(dataTypeDescriptor, storeDataScopesToCompile); sqlDataProviderCodeBuilder.AddExistingDataType(dataTypeDescriptor, storeDataScopesAlreadyCompiled); }, PopulateFieldsAction = types => { foreach (SqlDataTypeStoreDataScope storeDataScope in storeDataScopesToCompile) { string dataContextFieldName = NamesCreator.MakeDataContextFieldName(storeDataScope.TableName); string helperClassFullName = NamesCreator.MakeSqlDataProviderHelperClassFullName( dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type helperClass = types.Single(f => f.FullName == helperClassFullName); string entityClassFullName = NamesCreator.MakeEntityClassFullName( dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type entityClass = types.Single(f => f.FullName == entityClassFullName); var storeTableKey = new SqlDataTypeStoreTableKey(storeDataScope.DataScopeName, storeDataScope.CultureName); fields[storeTableKey] = new StoreTypeInfo(dataContextFieldName, entityClass, helperClass); } foreach (SqlDataTypeStoreDataScope storeDataScope in storeDataScopesAlreadyCompiled) { string dataContextFieldName = NamesCreator.MakeDataContextFieldName(storeDataScope.TableName); string helperClassFullName = NamesCreator.MakeSqlDataProviderHelperClassFullName( dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type helperClass = TryGetGeneratedType(helperClassFullName); string entityClassFullName = NamesCreator.MakeEntityClassFullName( dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type entityClass = TryGetGeneratedType(entityClassFullName); var storeTableKey = new SqlDataTypeStoreTableKey(storeDataScope.DataScopeName, storeDataScope.CultureName); fields[storeTableKey] = new StoreTypeInfo(dataContextFieldName, entityClass, helperClass); } } }); }
/// <summary> /// 添加店铺类型 /// </summary> /// <param name="_name">店铺类型名称</param> /// <param name="_remark">店铺类型备注</param> /// <returns>是否添加成功 true:添加店铺类型成功,false:添加店铺类型失败</returns> public static bool Add(string _name, string _remark) { //创建一个shopDBEntities对象 shopDBEntities sde = new shopDBEntities(); //创建一个StoreType对象 StoreTypeInfo sti = new StoreTypeInfo() { STI_Name = _name, STI_Remark = _remark }; //添加 sde.Entry(sti).State = System.Data.EntityState.Added; //提交数据库 int count = sde.SaveChanges(); //是否添加成功 return(IsYes(count)); }
/// <summary> /// Checks that tables related to specified data type included in current DataContext class, if not - compiles a new version of DataContext that contains them /// </summary> private HelperClassesGenerationInfo EnsureNeededTypes( DataTypeDescriptor dataTypeDescriptor, IEnumerable <SqlDataTypeStoreDataScope> sqlDataTypeStoreDataScopes, Dictionary <DataTypeDescriptor, IEnumerable <SqlDataTypeStoreDataScope> > allSqlDataTypeStoreDataScopes, Type dataContextClassType, out Dictionary <SqlDataTypeStoreTableKey, StoreTypeInfo> fields, ref bool dataContextRecompileNeeded, bool forceCompile = false) { lock (_lock) { // Getting the interface (ensuring that it exists) Type interfaceType = DataTypeTypesManager.GetDataType(dataTypeDescriptor); var storeDataScopesToCompile = new List <SqlDataTypeStoreDataScope>(); var storeDataScopesAlreadyCompiled = new List <SqlDataTypeStoreDataScope>(); fields = new Dictionary <SqlDataTypeStoreTableKey, StoreTypeInfo>(); foreach (SqlDataTypeStoreDataScope storeDataScope in sqlDataTypeStoreDataScopes) { string dataContextFieldName = NamesCreator.MakeDataContextFieldName(storeDataScope.TableName); FieldInfo dataContextFieldInfo = null; if (dataContextClassType != null) { dataContextFieldInfo = dataContextClassType.GetFields(BindingFlags.Public | BindingFlags.Instance) .SingleOrDefault(f => f.Name == dataContextFieldName); } string sqlDataProviderHelperClassFullName = NamesCreator.MakeSqlDataProviderHelperClassFullName(dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); string entityClassName = NamesCreator.MakeEntityClassFullName(dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type sqlDataProviderHelperClass = null, entityClass = null; try { sqlDataProviderHelperClass = TryGetGeneratedType(sqlDataProviderHelperClassFullName); entityClass = TryGetGeneratedType(entityClassName); forceCompile = forceCompile || CodeGenerationManager.IsRecompileNeeded(interfaceType, new[] { sqlDataProviderHelperClass, entityClass }); } catch (TypeLoadException) { forceCompile = true; } if (!forceCompile) { var storeTypeInfo = new StoreTypeInfo(dataContextFieldName, entityClass, sqlDataProviderHelperClass) { DataContextField = dataContextFieldInfo }; fields.Add(new SqlDataTypeStoreTableKey(storeDataScope.DataScopeName, storeDataScope.CultureName), storeTypeInfo); } if (dataContextFieldInfo == null) { dataContextRecompileNeeded = true; } if (forceCompile) { storeDataScopesToCompile.Add(storeDataScope); } else { storeDataScopesAlreadyCompiled.Add(storeDataScope); } } if (storeDataScopesToCompile.Any()) { dataContextRecompileNeeded = true; if (!dataTypeDescriptor.IsCodeGenerated) { // Building a new descriptor so generated classes take in account field changes dataTypeDescriptor = DynamicTypeManager.BuildNewDataTypeDescriptor(interfaceType); } return(CompileMissingClasses(dataTypeDescriptor, allSqlDataTypeStoreDataScopes, fields, storeDataScopesToCompile, storeDataScopesAlreadyCompiled)); } } return(null); }
/// <summary> /// Checks that tables related to specified data type included in current DataContext class, if not - compiles a new version of DataContext that contains them /// </summary> private HelperClassesGenerationInfo EnsureNeededTypes( DataTypeDescriptor dataTypeDescriptor, IEnumerable<SqlDataTypeStoreDataScope> sqlDataTypeStoreDataScopes, Dictionary<DataTypeDescriptor, IEnumerable<SqlDataTypeStoreDataScope>> allSqlDataTypeStoreDataScopes, Type dataContextClassType, out Dictionary<SqlDataTypeStoreTableKey, StoreTypeInfo> fields, ref bool dataContextRecompileNeeded, bool forceCompile = false) { lock (_lock) { // Getting the interface (ensuring that it exists) Type interfaceType = DataTypeTypesManager.GetDataType(dataTypeDescriptor); var storeDataScopesToCompile = new List<SqlDataTypeStoreDataScope>(); var storeDataScopesAlreadyCompiled = new List<SqlDataTypeStoreDataScope>(); fields = new Dictionary<SqlDataTypeStoreTableKey, StoreTypeInfo>(); foreach (SqlDataTypeStoreDataScope storeDataScope in sqlDataTypeStoreDataScopes) { string dataContextFieldName = NamesCreator.MakeDataContextFieldName(storeDataScope.TableName); FieldInfo dataContextFieldInfo = null; if (dataContextClassType != null) { dataContextFieldInfo = dataContextClassType.GetFields(BindingFlags.Public | BindingFlags.Instance) .SingleOrDefault(f => f.Name == dataContextFieldName); } string sqlDataProviderHelperClassFullName = NamesCreator.MakeSqlDataProviderHelperClassFullName(dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); string entityClassName = NamesCreator.MakeEntityClassFullName(dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type sqlDataProviderHelperClass = null, entityClass = null; try { sqlDataProviderHelperClass = TryGetGeneratedType(sqlDataProviderHelperClassFullName); entityClass = TryGetGeneratedType(entityClassName); forceCompile = forceCompile || CodeGenerationManager.IsRecompileNeeded(interfaceType, new[] { sqlDataProviderHelperClass, entityClass }); } catch (TypeLoadException) { forceCompile = true; } if (!forceCompile) { var storeTypeInfo = new StoreTypeInfo(dataContextFieldName, entityClass, sqlDataProviderHelperClass) { DataContextField = dataContextFieldInfo }; fields.Add(new SqlDataTypeStoreTableKey(storeDataScope.DataScopeName, storeDataScope.CultureName), storeTypeInfo); } if (dataContextFieldInfo == null) { dataContextRecompileNeeded = true; } if (forceCompile) { storeDataScopesToCompile.Add(storeDataScope); } else { storeDataScopesAlreadyCompiled.Add(storeDataScope); } } if (storeDataScopesToCompile.Any()) { dataContextRecompileNeeded = true; if (!dataTypeDescriptor.IsCodeGenerated) { // Building a new descriptor so generated classes take in account field changes dataTypeDescriptor = DynamicTypeManager.BuildNewDataTypeDescriptor(interfaceType); } return CompileMissingClasses(dataTypeDescriptor, allSqlDataTypeStoreDataScopes, fields, storeDataScopesToCompile, storeDataScopesAlreadyCompiled); } } return null; }
private HelperClassesGenerationInfo CompileMissingClasses(DataTypeDescriptor dataTypeDescriptor, Dictionary<DataTypeDescriptor, IEnumerable<SqlDataTypeStoreDataScope>> allSqlDataTypeStoreDataScopes, Dictionary<SqlDataTypeStoreTableKey, StoreTypeInfo> fields, List<SqlDataTypeStoreDataScope> storeDataScopesToCompile, List<SqlDataTypeStoreDataScope> storeDataScopesAlreadyCompiled) { return new HelperClassesGenerationInfo { GenerateCodeAction = codeGenerationBuilder => { var sqlDataProviderCodeBuilder = new SqlDataProviderCodeBuilder(_dataProviderContext.ProviderName, codeGenerationBuilder); sqlDataProviderCodeBuilder.AddDataType(dataTypeDescriptor, storeDataScopesToCompile); sqlDataProviderCodeBuilder.AddExistingDataType(dataTypeDescriptor, storeDataScopesAlreadyCompiled); }, PopulateFieldsAction = types => { foreach (SqlDataTypeStoreDataScope storeDataScope in storeDataScopesToCompile) { string dataContextFieldName = NamesCreator.MakeDataContextFieldName(storeDataScope.TableName); string helperClassFullName = NamesCreator.MakeSqlDataProviderHelperClassFullName( dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type helperClass = types.Single(f => f.FullName == helperClassFullName); string entityClassFullName = NamesCreator.MakeEntityClassFullName( dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type entityClass = types.Single(f => f.FullName == entityClassFullName); var storeTableKey = new SqlDataTypeStoreTableKey(storeDataScope.DataScopeName, storeDataScope.CultureName); fields[storeTableKey] = new StoreTypeInfo(dataContextFieldName, entityClass, helperClass); } foreach (SqlDataTypeStoreDataScope storeDataScope in storeDataScopesAlreadyCompiled) { string dataContextFieldName = NamesCreator.MakeDataContextFieldName(storeDataScope.TableName); string helperClassFullName = NamesCreator.MakeSqlDataProviderHelperClassFullName( dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type helperClass = TryGetGeneratedType(helperClassFullName); string entityClassFullName = NamesCreator.MakeEntityClassFullName( dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName); Type entityClass = TryGetGeneratedType(entityClassFullName); var storeTableKey = new SqlDataTypeStoreTableKey(storeDataScope.DataScopeName, storeDataScope.CultureName); fields[storeTableKey] = new StoreTypeInfo(dataContextFieldName, entityClass, helperClass); } } }; }