You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
USE [rootTenantDB001]GO/****** Object: Table [dbo].[Account] Script Date: 11/06/2022 14:37:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Account]([AccountID][uniqueidentifier]NOTNULL,[AccountNumber][nvarchar](20) NOT NULL,[AccountName][nvarchar](128)NOT NULL,[AccountNameEnglish][nvarchar](128) NULL,[Description][nvarchar](255) NULL,[ParentID][uniqueidentifier] NULL,[MISACodeID][nvarchar](100) NULL,[Grade][int] NULL,[IsParent][bit] NOT NULL,[AccountCategoryKind][int] NOT NULL,[IsPostableInForeignCurrency][bit] NOT NULL,[DetailByAccountObject][bit] NOT NULL,[AccountObjectType][int] NULL,[DetailByBankAccount][bit] NOT NULL,[DetailByJob][bit] NOT NULL,[DetailByJobKind][int] NULL,[DetailByProjectWork][bit] NOT NULL,[DetailByProjectWorkKind][int] NULL,[DetailByOrder][bit] NOT NULL,[DetailByOrderKind][int] NULL,[DetailByContract][bit] NOT NULL,[DetailByContractKind][int] NULL,[DetailByExpenseItem][bit] NOT NULL,[DetailByExpenseItemKind][int] NULL,[DetailByDepartment][bit] NOT NULL,[DetailByDepartmentKind][int] NULL,[DetailByListItem][bit] NOT NULL,[DetailByListItemKind][int] NULL,[Inactive][bit] NOT NULL,[CreatedDate][datetime] NULL,[CreatedBy][nvarchar](50)NULL,[ModifiedDate][datetime]NULL,[ModifiedBy][nvarchar](50) NULL,[SortMISACodeID][nvarchar](100)NULL,[DetailByPUContract][bit]NOTNULL,[DetailByPUContractKind][int]NULL,[AccountNameChinese][nvarchar](128) NULL,[AccountNameKorean][nvarchar](128)NULL,
CONSTRAINT [PK_Account]PRIMARY KEY CLUSTERED
([AccountID]ASC)WITH (PAD_INDEX= OFF,STATISTICS_NORECOMPUTE= OFF,IGNORE_DUP_KEY= OFF,ALLOW_ROW_LOCKS= ON,ALLOW_PAGE_LOCKS= ON,FILLFACTOR=90,OPTIMIZE_FOR_SEQUENTIAL_KEY= OFF) ON [PRIMARY]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_AccountID] DEFAULT (newid()) FOR [AccountID]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_Grade] DEFAULT ((1)) FOR [Grade]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_IsParent] DEFAULT ((0)) FOR [IsParent]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_AccountCategoryKind] DEFAULT ((0)) FOR [AccountCategoryKind]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_IsPostableInForeignCurrency] DEFAULT ((0)) FOR [IsPostableInForeignCurrency]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByAccountingObject] DEFAULT ((0)) FOR [DetailByAccountObject]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_AccountObjectType] DEFAULT ((0)) FOR [AccountObjectType]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByBank] DEFAULT ((0)) FOR [DetailByBankAccount]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByJob] DEFAULT ((0)) FOR [DetailByJob]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByJob1_1] DEFAULT ((0)) FOR [DetailByJobKind]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByJob1] DEFAULT ((0)) FOR [DetailByProjectWork]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByProjectWorkKind] DEFAULT ((0)) FOR [DetailByProjectWorkKind]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByProjectWork1] DEFAULT ((0)) FOR [DetailByOrder]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByOrderKind] DEFAULT ((0)) FOR [DetailByOrderKind]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByContract] DEFAULT ((0)) FOR [DetailByContract]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByContractKind] DEFAULT ((0)) FOR [DetailByContractKind]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByExpenseItem] DEFAULT ((0)) FOR [DetailByExpenseItem]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByExpenseItemKind] DEFAULT ((0)) FOR [DetailByExpenseItemKind]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByDepartment] DEFAULT ((0)) FOR [DetailByDepartment]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByDepartmentKind] DEFAULT ((0)) FOR [DetailByDepartmentKind]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByListItem] DEFAULT ((0)) FOR [DetailByListItem]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByListItemKind] DEFAULT ((0)) FOR [DetailByListItemKind]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_Inactive] DEFAULT ((0)) FOR [Inactive]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByPUContract] DEFAULT ((0)) FOR [DetailByPUContract]
GO
ALTER TABLE [dbo].[Account] ADD CONSTRAINT [DF_Account_DetailByPUContractKind] DEFAULT ((0)) FOR [DetailByPUContractKind]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'PK Tài khoản' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'AccountID'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Số hiệu tài khoản' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'AccountNumber'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Tên tài khoản' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'AccountName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Tên tài khoản bằng tiếng anh' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'AccountNameEnglish'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Diễn giải' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'Description'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'TK Tổng hợp' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'ParentID'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Cấp bậc' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'Grade'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Là TK tổng hợp' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'IsParent'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Tính chất tài khoản:0: Dư nợ;1: Dư có;2: Lưỡng tính' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'AccountCategoryKind'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Có hạch toán ngoại tệ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'IsPostableInForeignCurrency'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Chi tiết theo đối tượng' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByAccountObject'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Loại đối tượng:0- Nhà cung cấp,1- Khách hàng,2- Nhân viên' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'AccountObjectType'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Chi tiết theo tài khoản ngân hàng' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByBankAccount'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Chi tiết theo đối tượng tập hợp chi phí' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByJob'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0= Chỉ cảnh báo;1= Bắt buộc nhập' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByJobKind'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Chi tiết theo công trình vụ việc' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByProjectWork'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0= Chỉ cảnh báo;1= Bắt buộc nhập' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByProjectWorkKind'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Chi tiết theo đơn hàng' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByOrder'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0= Chỉ cảnh báo;1= Bắt buộc nhập' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByOrderKind'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Chi tiết theo hợp đồng' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByContract'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0= Chỉ cảnh báo;1= Bắt buộc nhập' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByContractKind'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Chi tiết theo Khoản mục CP' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByExpenseItem'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0= Chỉ cảnh báo;1= Bắt buộc nhập' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByExpenseItemKind'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Chi tiết theo đơn vị' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByDepartment'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0= Chỉ cảnh báo;1= Bắt buộc nhập' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByDepartmentKind'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Chi tiết theo mã thống kê' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByListItem'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0= Chỉ cảnh báo;1= Bắt buộc nhập' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'DetailByListItemKind'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ngừng theo dõi' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'Inactive'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Cột dùng để sort trên báo cáo. Không sử dụng trên giao diện.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account', @level2type=N'COLUMN',@level2name=N'SortMISACodeID'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Danh mục tài khoản' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Account'
GO
When I move from single-tenant to multi-tennant, I must rewire logic. It is very hard to acceptable in reality.
This is standard entity
USE [rootTenantDB001]GO/****** Object: Table [dbo].[Brand] Script Date: 11/06/2022 14:38:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Brand]([Id][uniqueidentifier]NOTNULL,[Name][nvarchar](max) NULL,[Description][nvarchar](max)NULL,[TenantKey][nvarchar](max) NULL,[CreatedBy][uniqueidentifier] NOT NULL,[CreatedOn][datetime2](7) NOT NULL,[LastModifiedBy][uniqueidentifier] NOT NULL,[LastModifiedOn][datetime2](7) NULL,[DeletedOn][datetime2](7)NULL,[DeletedBy][uniqueidentifier]NULL,
CONSTRAINT [PK_Brand]PRIMARY KEY CLUSTERED
([Id]ASC)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON,OPTIMIZE_FOR_SEQUENTIAL_KEY=OFF) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
40% entities in reality not use 1 PK (1 fields), they usually use 1 PK compose primary key (2 fields).
The design is not acceptable. We need rewrite all when move from single-tenant to multi-tenant architect. We need solution for keep old database schema of per tenant.
We have 250 tables, 200 views, 100 custom functions, 350 store procedures. We cannot rebase all database for multitenant.
Let's see another solution in Java Spring, we no need redesign database. Just switch connection string, very simple.
This is my entity
When I move from single-tenant to multi-tennant, I must rewire logic. It is very hard to acceptable in reality.
This is standard entity
40% entities in reality not use 1 PK (1 fields), they usually use 1 PK compose primary key (2 fields).
The design is not acceptable. We need rewrite all when move from single-tenant to multi-tenant architect. We need solution for keep old database schema of per tenant.
We have 250 tables, 200 views, 100 custom functions, 350 store procedures. We cannot rebase all database for multitenant.
Let's see another solution in Java Spring, we no need redesign database. Just switch connection string, very simple.
Another problem with StyleCop: dotnet/efcore#28187
The text was updated successfully, but these errors were encountered: