Пример #1
0
        public string GetSql()
        {
            var rawSqlQuery = OrmConfiguration.GetSqlBuilder <TestModel>().Format(
                $@"SELECT {nameof(Id):C},{nameof(Name):C} FROM {nameof(TestModel):T}");

            return(rawSqlQuery);
        }
 private static void SetupRole()
 {
     OrmConfiguration.GetDefaultEntityMapping <Role>()
     .SetTableName("Role")
     .SetProperty(role => role.Id,
                  prop => prop.SetPrimaryKey().SetDatabaseGenerated(DatabaseGeneratedOption.Identity));
 }
Пример #3
0
        public async Task <QuyenTacVu> UpdatePartial(QuyenTacVu quyen, params string[] field)
        {
            return(await WithConnection(async c =>
            {
                QuyenTacVu obj = await c.GetAsync(quyen);

                if (obj == null)
                {
                    await c.InsertAsync(quyen);
                    if (quyen.ChucNangId == 0)
                    {
                        throw new Exception("Insert Fail");
                    }
                    return quyen;
                }
                var list = field.ToList();
                var partialUpdateMapping = OrmConfiguration
                                           .GetDefaultEntityMapping <QuyenTacVu>()
                                           .Clone() // clone it if you don't want to modify the default
                                           .UpdatePropertiesExcluding(prop => prop.IsExcludedFromUpdates = true,
                                                                      list.ToArray());

                var result = await c.UpdateAsync(quyen, statement => statement.WithEntityMappingOverride(partialUpdateMapping));

                if (result != true)
                {
                    throw new Exception("Update Fail");
                }

                return quyen;
            }));
        }
Пример #4
0
        public static DBProviderBase <TEntity> GetDbProvider(OrmConfiguration ormConfiguration)
        {
            try
            {
                Lazy <ConfigurationManagementManager> configReader = new Lazy <ConfigurationManagementManager>(() => new ConfigurationManagementManager());

                Type TE = typeof(TEntity);

                string _providerName = configReader.Value.Get <string>("gooDBProvider");

                string providerName = string.Concat("Goo.OrmCore.", _providerName, "`1[[", TE.AssemblyQualifiedName, "]]");

                Type TP = Type.GetType(providerName, true, true);

                var providerInstance = TP.GetMethod("get_getInstance").Invoke(null, null);

                providerInstance.GetType().GetMethod("SetOrmConfiguration").Invoke(providerInstance, new object[] { ormConfiguration });

                return(OrmHelper.getInstance.ConvertTo <DBProviderBase <TEntity> >(providerInstance));
            }
            catch (Exception ex)
            {
                throw new Exception("This provider type is not supported for Goo. Detail:" + ex.ToString());
            }
        }
Пример #5
0
        public async Task <KhoHangHoa> UpdatePartial(KhoHangHoa khachhang, params string[] field)
        {
            var a = await WithConnection(async c =>
            {
                KhoHangHoa obj = await c.GetAsync(khachhang);

                if (obj == null)
                {
                    throw new Exception(string.Format("Update id {0} not exist", khachhang.HangHoaId.ToString()));
                }
                var list = field.ToList();
                var partialUpdateMapping = OrmConfiguration
                                           .GetDefaultEntityMapping <KhoHangHoa>()
                                           .Clone()
                                           .UpdatePropertiesExcluding(prop => prop.IsExcludedFromUpdates = true,
                                                                      list.ToArray());

                var result = await c.UpdateAsync(khachhang, statement => statement.WithEntityMappingOverride(partialUpdateMapping));

                if (result != true)
                {
                    throw new Exception("Update Fail");
                }

                return(khachhang);
            });

            return(a);
        }
Пример #6
0
        public void WhenIPartiallyUpdateAllTheInsertedEmployeeEntities()
        {
            // prepare a new mapping
            var defaultMapping = OrmConfiguration.GetDefaultEntityMapping <Employee>();

            Assert.IsTrue(defaultMapping.IsFrozen);

            var lastNamePropMapping = defaultMapping.GetProperty(employee => employee.LastName);

            try
            {
                // updates are not possible when the mapping is frozen
                defaultMapping.SetProperty(employee => employee.LastName, propMapping => propMapping.ExcludeFromUpdates());
                Assert.Fail();
            }
            catch (InvalidOperationException)
            {
            }

            var customMapping = defaultMapping.Clone().UpdatePropertiesExcluding(prop => prop.IsExcludedFromUpdates = true, nameof(Employee.LastName), nameof(Employee.FullName));

            for (var entityIndex = 0; entityIndex < _testContext.LocalEntities.Count; entityIndex++)
            {
                var insertedEntity = _testContext.LocalEntities[entityIndex] as Employee;
                if (insertedEntity == null)
                {
                    continue;
                }

                var partialUpdatedEntity = new Employee()
                {
                    UserId        = insertedEntity.UserId,
                    EmployeeId    = insertedEntity.EmployeeId,
                    BirthDate     = new DateTime(2020, 03, 01),
                    WorkstationId = 10 + insertedEntity.WorkstationId,
                    FirstName     = "Updated " + insertedEntity.FirstName,

                    // all of the above will be ignored with the exception of the next ones
                    LastName = "Updated " + insertedEntity.LastName
                };

                _testContext.DatabaseConnection.Update(partialUpdatedEntity, statement => statement.WithEntityMappingOverride(customMapping));

                _testContext.LocalEntities[entityIndex] = new Employee()
                {
                    UserId        = insertedEntity.UserId,
                    KeyPass       = insertedEntity.KeyPass,
                    EmployeeId    = insertedEntity.EmployeeId,
                    BirthDate     = insertedEntity.BirthDate,
                    WorkstationId = insertedEntity.WorkstationId,
                    FirstName     = insertedEntity.FirstName,

                    // all of the above were ignored with the exception of the next ones
                    LastName = partialUpdatedEntity.LastName,
                    FullName = partialUpdatedEntity.FullName
                };
            }
        }
Пример #7
0
        internal void Save(IDbConnection db)
        {
            if (!_licensesToRemove.IsEmpty)
            {
                var     idsToRemove = new StringBuilder();
                var     firstRun    = true;
                License licenseToRemove;
                while (_licensesToRemove.TryPop(out licenseToRemove))
                {
                    if (firstRun)
                    {
                        firstRun = false;
                    }
                    else
                    {
                        idsToRemove.Append(',');
                    }
                    idsToRemove.Append(licenseToRemove.Id);
                }

                db.BulkDelete <PlayerLicenseDto>(statement => statement
                                                 .Where($"{nameof(PlayerLicenseDto.Id):C} IN ({idsToRemove})"));
            }

            foreach (var license in this)
            {
                if (!license.ExistsInDatabase)
                {
                    db.Insert(new PlayerLicenseDto
                    {
                        Id                 = license.Id,
                        PlayerId           = (int)_player.Account.Id,
                        License            = (byte)license.ItemLicense,
                        FirstCompletedDate = license.FirstCompletedDate.ToUnixTimeSeconds(),
                        CompletedCount     = license.TimesCompleted
                    });
                    license.ExistsInDatabase = true;
                }
                else
                {
                    if (!license.NeedsToSave)
                    {
                        continue;
                    }

                    var mapping = OrmConfiguration
                                  .GetDefaultEntityMapping <PlayerLicenseDto>()
                                  .Clone()
                                  .UpdatePropertiesExcluding(prop => prop.IsExcludedFromUpdates = true,
                                                             nameof(PlayerLicenseDto.CompletedCount));
                    db.Update(new PlayerLicenseDto
                    {
                        CompletedCount = license.TimesCompleted
                    }, statement => statement.WithEntityMappingOverride(mapping));
                    license.NeedsToSave = false;
                }
            }
        }
 private static void SetupUser()
 {
     OrmConfiguration.GetDefaultEntityMapping <User>()
     .SetTableName("User")
     .SetProperty(user => user.Id,
                  prop => prop.SetPrimaryKey().SetDatabaseGenerated(DatabaseGeneratedOption.Identity))
     .SetProperty(user => user.RoleId,
                  prop => prop.SetChildParentRelationship <Role>("Role"));
 }
Пример #9
0
 static XtcsModel()
 {
     OrmConfiguration.GetDefaultEntityMapping <XtcsModel>()
     .SetProperty(entity => entity.Id,
                  prop =>
     {
         prop.SetDatabaseColumnName("Xtcsdm00");
     });
 }
Пример #10
0
        private void PrepareEnvironment <TEntity>(SqlDialect dialect)
        {
            OrmConfiguration.DefaultDialect = dialect;

            // in real library usage, people will use the ISqlBuilder, but for our tests we're gonna need more than that
            _currentSqlBuilder = OrmConfiguration.GetSqlBuilder <TEntity>() as IStatementSqlBuilder;
            _currentDialect    = dialect;
            _selectColumnNames = _currentSqlBuilder.SelectProperties.Select(propInfo => propInfo.DatabaseColumnName).ToArray();
        }
Пример #11
0
 static BaseDapperFastCrud()
 {
     InfoMapping.Add(Common.SettingItem.DBType.MSSQL,
                     OrmConfiguration.GetDefaultEntityMapping <T>()
                     .Clone().SetDialect(SqlDialect.MsSql));
     InfoMapping.Add(Common.SettingItem.DBType.POSTGRESQL,
                     OrmConfiguration.GetDefaultEntityMapping <T>()
                     .Clone().SetDialect(SqlDialect.PostgreSql));
 }
Пример #12
0
        private void SetupOrmConfiguration(SqlDialect dialect)
        {
            OrmConfiguration.DefaultDialect = dialect;

            OrmConfiguration.RegisterEntity <Building>()
            .SetTableName("Buildings")
            .SetProperty(building => building.BuildingId, propMapping => propMapping.SetPrimaryKey().SetDatabaseGenerated(DatabaseGeneratedOption.Identity).SetDatabaseColumnName("Id"))
            .SetProperty(building => building.Name, propMapping => propMapping.SetDatabaseColumnName("BuildingName"));
        }
Пример #13
0
        public static void SetDialogueIfNeeded_AddsMappedIsFroozenToDictionary()
        {
            var target = new SqlDialectHelper();

            target.SetDialogueIfNeeded <Brave>(SqlDialect.SqLite);
            var result = target.GetEntityState <Brave>();

            Assert.That(result.HasValue, Is.True);
            Assert.That(OrmConfiguration.GetDefaultEntityMapping <Brave>().Dialect, Is.EqualTo(SqlDialect.SqLite));
        }
Пример #14
0
 static DepartmentModel()
 {
     OrmConfiguration.GetDefaultEntityMapping <DepartmentModel>()
     .SetProperty(entity => entity.Id,
                  prop =>
     {
         prop.SetDatabaseColumnName("Did");
         prop.SetDatabaseGenerated(DatabaseGeneratedOption.Identity);
     });
 }
Пример #15
0
 static Arz0Model()
 {
     OrmConfiguration.GetDefaultEntityMapping <Arz0Model>()
     .SetProperty(entity => entity.Id,
                  prop =>
     {
         prop.SetDatabaseColumnName("Arz0xh00");
         prop.SetDatabaseGenerated(DatabaseGeneratedOption.Identity);
     });
 }
Пример #16
0
 static ExtendTypeItemModel()
 {
     OrmConfiguration.GetDefaultEntityMapping <ExtendTypeItemModel>()
     .SetProperty(entity => entity.Id,
                  prop =>
     {
         prop.SetDatabaseColumnName("Id");
         prop.SetDatabaseGenerated(DatabaseGeneratedOption.Identity);
     });
 }
Пример #17
0
        public void ThenIShouldGetAValidJoinQueryStatementForWorkstation()
        {
            var buildingSqlBuilder = OrmConfiguration.GetSqlBuilder <Building>();
            var expectedQuery      =
                $@" SELECT {_currentSqlBuilder.GetTableName()}.{_currentSqlBuilder.GetColumnName(nameof(Workstation.WorkstationId))}, {buildingSqlBuilder.GetTableName()}.{buildingSqlBuilder.GetColumnName(nameof(Building.BuildingId))}
                    FROM {_currentSqlBuilder.GetTableName()}, {buildingSqlBuilder.GetTableName()}
                    WHERE {_currentSqlBuilder.GetTableName()}.{_currentSqlBuilder.GetColumnName(nameof(Workstation.BuildingId))} = {buildingSqlBuilder.GetTableName()}.{buildingSqlBuilder.GetColumnName(nameof(Building.BuildingId))}";

            Assert.AreEqual(expectedQuery, _buildingRawJoinQueryStatement);
        }
Пример #18
0
        public static void SetDialogueIfNeeded_SetsIsFroozenInDictionary()
        {
            var repo = new BraveRepository(Factory);

            repo.GetKey <ITestSession>(1);
            var target = new SqlDialectHelper();
            var result = target.GetEntityState <Brave>();

            Assert.That(result.HasValue, Is.True);
            Assert.That(result.Value, Is.True);
            Assert.That(OrmConfiguration.GetDefaultEntityMapping <Brave>().Dialect, Is.EqualTo(SqlDialect.SqLite));
        }
Пример #19
0
        public void WhenIQueryForAMaximumOfWorkstationEntitiesInReverseOrderOfWorkstationIdSkippingRecords(int?max, int?skip)
        {
            var sqlBuilder = OrmConfiguration.GetSqlBuilder <Workstation>();

            _testContext.QueriedEntities.AddRange(
                _testContext.DatabaseConnection.Find <Workstation>(
                    statementOptions =>
                    statementOptions.Where($"{nameof(Workstation.WorkstationId):C} IS NOT NULL")
                    .OrderBy($"{nameof(Workstation.InventoryIndex):C} DESC")
                    .Skip(skip)
                    .Top(max)));
        }
Пример #20
0
        public void DisableAllDatesByEventId(long eventId)
        {
            var partialUpdateMapping = OrmConfiguration
                                       .GetDefaultEntityMapping <PlaceHolidayDate>()
                                       .Clone() // clone it if you don't want to modify the default
                                       .UpdatePropertiesExcluding(prop => prop.IsExcludedFromUpdates = true, nameof(PlaceHolidayDate.IsEnabled));

            GetCurrentConnection().BulkUpdate(
                new PlaceHolidayDate
            {
                IsEnabled = false,        // You can add as many as fields you want to update
            }, statement => statement.WithEntityMappingOverride(partialUpdateMapping).Where($"{nameof(PlaceHolidayDate.EventId):C}=@EventId").WithParameters(new { EventId = eventId }).AttachToTransaction(GetCurrentTransaction()));
        }
Пример #21
0
        public static void Table_Will_SetDialect()
        {
            var connection = CreateSession(null);
            var sql        = SqlInstance.Instance;

            connection.Query($"SELECT * FROM {sql.Table<Brave>(connection.SqlDialect)}");
            var target = new SqlDialectHelper();
            var result = target.GetEntityState <Brave>();

            Assert.That(result.HasValue, Is.True);
            Assert.That(result.Value, Is.True);
            Assert.That((int)OrmConfiguration.GetDefaultEntityMapping <Brave>().Dialect, Is.EqualTo((int)connection.SqlDialect));
        }
Пример #22
0
        public void DisableAllVariants(string productId)
        {
            var partialUpdateMapping = OrmConfiguration
                                       .GetDefaultEntityMapping <TiqetVariantDetail>()
                                       .Clone() // clone it if you don't want to modify the default
                                       .UpdatePropertiesExcluding(prop => prop.IsExcludedFromUpdates = true, nameof(TiqetVariantDetail.IsEnabled));

            GetCurrentConnection().BulkUpdate(
                new TiqetVariantDetail
            {
                IsEnabled = false,
            }, statement => statement.WithEntityMappingOverride(partialUpdateMapping).Where($"{nameof(TiqetVariantDetail.ProductId):C}=@ProductId").WithParameters(new { ProductId = productId }).AttachToTransaction(GetCurrentTransaction()));
        }
Пример #23
0
        public async Task CreateNickHandler(GameServer server, GameSession session, CCreateNickReqMessage message)
        {
            if (session.Player == null || !string.IsNullOrWhiteSpace(session.Player.Account.Nickname))
            {
                session.Dispose();
                return;
            }

            Logger.Info()
            .Account(session)
            .Message($"Creating nickname {message.Nickname}")
            .Write();

            if (!await IsNickAvailableAsync(message.Nickname).ConfigureAwait(false))
            {
                Logger.Error()
                .Account(session)
                .Message($"Nickname not available: {message.Nickname}")
                .Write();

                await session.SendAsync(new SCheckNickAckMessage(false))
                .ConfigureAwait(false);

                return;
            }

            session.Player.Account.Nickname = message.Nickname;
            using (var db = AuthDatabase.Open())
            {
                var mapping = OrmConfiguration
                              .GetDefaultEntityMapping <AccountDto>()
                              .Clone()
                              .UpdatePropertiesExcluding(prop => prop.IsExcludedFromUpdates = true, nameof(AccountDto.Nickname));

                await db.UpdateAsync(new AccountDto { Id = (int)session.Player.Account.Id, Nickname = message.Nickname },
                                     statement => statement.WithEntityMappingOverride(mapping))
                .ConfigureAwait(false);
            }
            //session.Send(new SCreateNickAckMessage { Nickname = msg.Nickname });
            await session.SendAsync(new SServerResultInfoAckMessage(ServerResult.CreateNicknameSuccess))
            .ConfigureAwait(false);

            Logger.Info()
            .Account(session)
            .Message($"Created nickname {message.Nickname}")
            .Write();

            await LoginAsync(server, session)
            .ConfigureAwait(false);
        }
Пример #24
0
 public WalletMap()
 {
     OrmConfiguration.RegisterEntity <Wallet>()
     .SetTableName("Wallets")
     .SetProperty(c => c.Id,
                  prop => prop.SetPrimaryKey().SetDatabaseGenerated(DatabaseGeneratedOption.None))
     .SetProperty(c => c.ClientId, prop => prop.SetDatabaseColumnName("ClientId").SetChildParentRelationship <Client>("Client"))
     .SetProperty(c => c.CurrencyTypeId, prop => prop.SetDatabaseColumnName("CurrencyTypeId").SetChildParentRelationship <CurrencyType>("CurrencyType"))
     .SetProperty(c => c.Status, prop => prop.SetDatabaseColumnName("Status"))
     .SetProperty(c => c.Created, prop => prop.SetDatabaseColumnName("Created"))
     .SetProperty(c => c.Updated, prop => prop.SetDatabaseColumnName("Updated"))
     .SetProperty(c => c.Deleted, prop => prop.SetDatabaseColumnName("Deleted"))
     ;
 }
        public void DisableAll()
        {
            var partialUpdateMapping = OrmConfiguration
                                       .GetDefaultEntityMapping <TiqetEventDetailMapping>()
                                       .Clone() // clone it if you don't want to modify the default
                                       .UpdatePropertiesExcluding(prop => prop.IsExcludedFromUpdates = true, nameof(TiqetEventDetailMapping.IsEnabled));

            GetCurrentConnection().BulkUpdate(
                new TiqetEventDetailMapping
            {
                IsEnabled = false,
            },
                statement => statement.WithEntityMappingOverride(partialUpdateMapping)
                .AttachToTransaction(GetCurrentTransaction()));
        }
Пример #26
0
 public ClientMap()
 {
     OrmConfiguration.RegisterEntity <Client>()
     .SetTableName("Clients")
     .SetProperty(c => c.Id,
                  prop => prop.SetPrimaryKey().SetDatabaseGenerated(DatabaseGeneratedOption.None))
     .SetProperty(c => c.FirstName, prop => prop.SetDatabaseColumnName("FirstName"))
     .SetProperty(c => c.LastName, prop => prop.SetDatabaseColumnName("LastName"))
     .SetProperty(c => c.Email, prop => prop.SetDatabaseColumnName("Email"))
     .SetProperty(c => c.Status, prop => prop.SetDatabaseColumnName("Status"))
     .SetProperty(c => c.Created, prop => prop.SetDatabaseColumnName("Created"))
     .SetProperty(c => c.Updated, prop => prop.SetDatabaseColumnName("Updated"))
     .SetProperty(c => c.Deleted, prop => prop.SetDatabaseColumnName("Deleted"))
     ;
 }
Пример #27
0
 public CurrencyTypeMap()
 {
     OrmConfiguration.RegisterEntity <CurrencyType>()
     .SetTableName("CurrencyTypes")
     .SetProperty(c => c.Id,
                  prop => prop.SetPrimaryKey().SetDatabaseGenerated(DatabaseGeneratedOption.None))
     .SetProperty(c => c.Name, prop => prop.SetDatabaseColumnName("Name"))
     .SetProperty(c => c.Initials, prop => prop.SetDatabaseColumnName("Initials"))
     .SetProperty(c => c.Current, prop => prop.SetDatabaseColumnName("Current"))
     .SetProperty(c => c.CultureInfoName, prop => prop.SetDatabaseColumnName("CultureInfoName"))
     .SetProperty(c => c.Created, prop => prop.SetDatabaseColumnName("Created"))
     .SetProperty(c => c.Updated, prop => prop.SetDatabaseColumnName("Updated"))
     .SetProperty(c => c.Deleted, prop => prop.SetDatabaseColumnName("Deleted"))
     ;
 }
 static Repository()
 {
     OrmConfiguration
     .RegisterEntity <ProductName>()
     .SetSchemaName("Production")
     .SetTableName("Product")
     .SetProperty(x => x.ProductId)
     .SetProperty(x => x.Name);
     OrmConfiguration
     .RegisterEntity <SalesLineTotal>()
     .SetSchemaName("Sales")
     .SetTableName("SalesOrderDetail")
     .SetProperty(x => x.ProductId)
     .SetProperty(x => x.LineTotal);
 }
Пример #29
0
        public static void Query_Wont_MakeFrozen()
        {
            var connection = new TestSessionMemory(A.Fake <IDbFactory>());

            new MigrateDb(connection);
            var target = new SqlDialectHelper();

            target.Reset();
            OrmConfiguration.RegisterEntity <Brave>();
            connection.Query("SELECT * FROM Braves");
            var result = target.GetEntityState <Brave>();

            Assert.That(OrmConfiguration.GetDefaultEntityMapping <Brave>().IsFrozen, Is.False);
            Assert.That(result.HasValue, Is.False);
        }
Пример #30
0
        static void Main(string[] args)
        {
            var serviceProvider = new ServiceCollection()
                                  .AddSingleton <IBaseRepostory <Bank>, BankRepository>()
                                  .AddScoped <IDbConnection>(_ => new MySqlConnection("Server=172.17.0.1;DataBase=testedb;Uid=root;Pwd=example"))
                                  .AddScoped(_ => OrmConfiguration
                                             .GetDefaultEntityMapping <Bank>()
                                             .SetDialect(SqlDialect.MySql)
                                             .SetTableName("bank")
                                             )
                                  .AddSingleton <Service>()
                                  .BuildServiceProvider();

            serviceProvider.GetService <Service>().Run();
        }