コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
                    }
                }
            });
        }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        /// <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;
        }
コード例 #6
0
        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);
                    }
                }
            };
        }