ErikEJ / EFCorePowerTools

Entity Framework Core Power Tools - reverse engineering, migrations and model visualization in Visual Studio & CLI
MIT License
2.16k stars 297 forks source link

EF Core power tool is not generating mappings for a table with foreign keys in it from other tables #2195

Closed sohaibameenpk007 closed 7 months ago

sohaibameenpk007 commented 7 months ago

Hello,

I am using EF Core power tool to generate mappings for a table which have foreign keys from other tables. On generating the entities and context, mapping does not show the relationship of the table with other tables.

SequenceCommodity is the table and "WorkZoneID, DestinationDockID" coming from WorkZone, DestinationDocks respectively. Context file does not have mappings for WorkZone, DestinationDocks for SequenceCommodity.

Am I missing something from the configuration / settings from EF Core power tool?

Please provide some insights. Thanks

`USE [Streme_York] GO

/** Object: Table [dbo].[SequenceCommodity] Script Date: 2/28/2024 4:55:11 PM **/ SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

CREATE TABLE [dbo].[SequenceCommodity]( [CommodityID] [int] NOT NULL, [WorkZoneID] [int] NULL, [CustomerLocation] varchar NULL, [Required] [bit] NOT NULL, [SequenceNumberRangeFilterMin] [int] NOT NULL, [SequenceNumberRangeFilterMax] [int] NOT NULL, [SequenceNumberRangeFilterLeftPrecision] [tinyint] NOT NULL, [SequenceNumberRangeFilterInclude] [bit] NOT NULL, [PickToLocationCode] varchar NULL, [Active] [bit] NOT NULL, [LastShippedSequenceNumber] [int] NOT NULL, [InventoryThrottleQueue] [bit] NOT NULL, [ItemEvalRulesMustEvaluateToSinglePart] [bit] NOT NULL, [ShipReverseLoad] [bit] NOT NULL, [ShipMultiLoadAllowed] [bit] NOT NULL, [ExternalBuildServer] varchar NULL, [ERPInventoryOption] [tinyint] NOT NULL, [DestinationDockID] [int] NOT NULL, [SharedPickLocations] [bit] NULL, [SubassembledToSinglePart] [bit] NOT NULL, [ExternalBuildSystemID] [int] NOT NULL, [AllowIncompleteSubItemInventory] [bit] NOT NULL, [PickByLocation] [bit] NOT NULL, [ExternallyAssignPickQueueRacks] [bit] NOT NULL, [ExternallyPickedRacks] [bit] NOT NULL, [ExternallyPickedRacksMaxErrorLogs] [int] NOT NULL, [ExternalBuildPrintLabel] [bit] NOT NULL, [ExternalBuildGetPartialRack] [bit] NOT NULL, [AlternateBatchPreFilterCommodityID] [int] NULL, [ProductionStatusName] varchar NOT NULL, [PickByCart] [bit] NOT NULL, [AllowPartSkipping] [bit] NOT NULL, [CycleTimeThresholdMinutes] [tinyint] NOT NULL, [PickInventoryTranactionsRequired] [bit] NOT NULL, [AllowOtherPickLocs] [bit] NOT NULL, [ReorderRackItemsByULoc] [bit] NOT NULL, [RemoveEmptyRackItems] [bit] NOT NULL, [AllowPickBypass] [bit] NOT NULL, [TransferEachLotPick] [bit] NOT NULL, [BadScanRackAuditOverride] [bit] NOT NULL, [ReorderULocThenTote] [bit] NOT NULL, [BypassCreatesItemAlert] [bit] NOT NULL, [BackOrderForShippedBypassedRackItem] [bit] NOT NULL, [CommodityPickAuditingRequiredID] [int] NOT NULL, [CommodityPickAuditingTypeID] [int] NOT NULL, [PrePickLocationCode] varchar NULL, [SequenceConsumptionMethodTypeID] [int] NOT NULL, CONSTRAINT [PK_SequenceCommodity] PRIMARY KEY CLUSTERED ( [CommodityID] 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] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_Required] DEFAULT ((1)) FOR [Required] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_SequenceNumberFilterMin] DEFAULT ((0)) FOR [SequenceNumberRangeFilterMin] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_SequenceNumberRangeFilterMax] DEFAULT ((0)) FOR [SequenceNumberRangeFilterMax] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_SequenceNumberRangeFilterLeftPrecision] DEFAULT ((0)) FOR [SequenceNumberRangeFilterLeftPrecision] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_SequenceNumberRangeFilterInclude] DEFAULT ((1)) FOR [SequenceNumberRangeFilterInclude] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_PickToLocationCode] DEFAULT ('') FOR [PickToLocationCode] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_Active] DEFAULT ((0)) FOR [Active] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_LastShippedSequenceNumber] DEFAULT ((0)) FOR [LastShippedSequenceNumber] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_InventoryThrottleQueue] DEFAULT ((0)) FOR [InventoryThrottleQueue] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_ItemEvalRulesMustEvaluateToSinglePart] DEFAULT ((1)) FOR [ItemEvalRulesMustEvaluateToSinglePart] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_ShipReverseLoad] DEFAULT ((0)) FOR [ShipReverseLoad] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_ShipMultiLoadAllowed] DEFAULT ((0)) FOR [ShipMultiLoadAllowed] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_ExternalBuildServer] DEFAULT ('') FOR [ExternalBuildServer] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_SequenceCommodity_ERPInventoryOption] DEFAULT ((0)) FOR [ERPInventoryOption] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [DestinationDockID] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [SharedPickLocations] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((1)) FOR [SubassembledToSinglePart] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [ExternalBuildSystemID] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((1)) FOR [AllowIncompleteSubItemInventory] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [PickByLocation] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [ExternallyAssignPickQueueRacks] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [ExternallyPickedRacks] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [ExternallyPickedRacksMaxErrorLogs] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [ExternalBuildPrintLabel] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [ExternalBuildGetPartialRack] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ('') FOR [ProductionStatusName] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [PickByCart] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [AllowPartSkipping] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD CONSTRAINT [DF_CycleTimeThresholdMinutes] DEFAULT ((0)) FOR [CycleTimeThresholdMinutes] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [PickInventoryTranactionsRequired] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [AllowOtherPickLocs] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [ReorderRackItemsByULoc] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [RemoveEmptyRackItems] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [AllowPickBypass] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [TransferEachLotPick] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [BadScanRackAuditOverride] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [ReorderULocThenTote] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [BypassCreatesItemAlert] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [BackOrderForShippedBypassedRackItem] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [CommodityPickAuditingRequiredID] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [CommodityPickAuditingTypeID] GO

ALTER TABLE [dbo].[SequenceCommodity] ADD DEFAULT ((0)) FOR [SequenceConsumptionMethodTypeID] GO

ALTER TABLE [dbo].[SequenceCommodity] WITH CHECK ADD CONSTRAINT [FK_SequenceCommodity_Commodity] FOREIGN KEY([CommodityID]) REFERENCES [dbo].[Commodity] ([CommodityID]) ON UPDATE CASCADE ON DELETE CASCADE GO

ALTER TABLE [dbo].[SequenceCommodity] CHECK CONSTRAINT [FK_SequenceCommodity_Commodity] GO

ALTER TABLE [dbo].[SequenceCommodity] WITH NOCHECK ADD CONSTRAINT [FK_SequenceCommodity_DestinationDocks] FOREIGN KEY([DestinationDockID]) REFERENCES [dbo].[DestinationDocks] ([DestinationDockID]) ON UPDATE CASCADE NOT FOR REPLICATION GO

ALTER TABLE [dbo].[SequenceCommodity] CHECK CONSTRAINT [FK_SequenceCommodity_DestinationDocks] GO

ALTER TABLE [dbo].[SequenceCommodity] WITH NOCHECK ADD CONSTRAINT [FK_SequenceCommodity_WorkZone] FOREIGN KEY([WorkZoneID]) REFERENCES [dbo].[WorkZone] ([WorkZoneID]) NOT FOR REPLICATION GO

ALTER TABLE [dbo].[SequenceCommodity] CHECK CONSTRAINT [FK_SequenceCommodity_WorkZone] GO

ALTER TABLE [dbo].[SequenceCommodity] WITH CHECK ADD CONSTRAINT [CHK_CycleTimeThresholdMinutes] CHECK (([CycleTimeThresholdMinutes]>=(0) AND [CycleTimeThresholdMinutes]<=(90))) GO

ALTER TABLE [dbo].[SequenceCommodity] CHECK CONSTRAINT [CHK_CycleTimeThresholdMinutes] GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The Commodiity table''s unique identifier. Values may be up to 10 alphanumeric characters.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity', @level2type=N'COLUMN',@level2name=N'CommodityID' GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Work Zone within Plant that this Commodity will be located. Related to Work Zone table.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity', @level2type=N'COLUMN',@level2name=N'WorkZoneID' GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A Customer supplied value that indicates the physical location at the Customer facility that this Commodity must be Shipped to. Values may be up to 100 alphanumeric characters.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity', @level2type=N'COLUMN',@level2name=N'CustomerLocation' GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'When true, all Sequence Orders must be valid and exist for this Commodity. i.e. All Orders will have actual product units from this Commodiity. If a received Order is missing the necessary specification data to indicate the product units for this Commodity, an exception will be thrown and an alert notification sent out by the application after the Order is received.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity', @level2type=N'COLUMN',@level2name=N'Required' GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Minimum Sequence Number of Commodity Sequence Number Filter Range. Only Sequence Orders within this range will be included for this Commodity when this feature is enabled. When both Minimum and Maximum are zero, Commodity Sequence Number Filter Range feature is disabled.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity', @level2type=N'COLUMN',@level2name=N'SequenceNumberRangeFilterMin' GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Maximum Sequence Number of Commodity Sequence Number Filter Range. Only Sequence Orders within this range will be included for this Commodity when this feature is enabled. When both Minimum and Maximum are zero, Commodity Sequence Number Filter Range feature is disabled.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity', @level2type=N'COLUMN',@level2name=N'SequenceNumberRangeFilterMax' GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Customer Sequence Number Range Filter evaluation will look at the Sequence Numbers up to this Left Precision. e.g. - If the Left Precision value is 4, only the digits up to the thousands will be evaluated for the Range Filter. The value of zero indicates that the entire Sequence Number should be evaluated.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity', @level2type=N'COLUMN',@level2name=N'SequenceNumberRangeFilterLeftPrecision' GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Indicates whether the Sequence Order should be included or excluded for this Commodity when the Customer Sequence Number falls within the Filter Range.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity', @level2type=N'COLUMN',@level2name=N'SequenceNumberRangeFilterInclude' GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Location Code that represents the Racks being picked and will be provided to the ERP System when inventory is moved from its source Pick Location to the Rack and also when Racks are Shipped.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity', @level2type=N'COLUMN',@level2name=N'PickToLocationCode' GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Commodities are the basic organizational business entity within the application. Most other application business entities are associated to Commodities. The Commodity is used to group directly related Commodity Items which represent the actual Customer Product that the business operations are dealing with. A simple example would be Headlamps as the Commodity with Left Headlamp and Right Headlamp being the actual Commodity Items. Other important application business entities are associated to Commodities such as Parts and Containers.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SequenceCommodity' GO

`

Best, Sohaib

ErikEJ commented 7 months ago

@sohaibameenpk007 I need the create script for all involved tables!

sohaibameenpk007 commented 7 months ago

WorkZone

USE [Streme_York] GO

/** Object: Table [dbo].[WorkZone] Script Date: 2/28/2024 5:03:22 PM **/ SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

CREATE TABLE [dbo].[WorkZone]( [WorkZoneID] [int] IDENTITY(1,1) NOT NULL, [TimeStamp] [timestamp] NULL, [Name] varchar NULL, CONSTRAINT [PK_WorkZone] PRIMARY KEY CLUSTERED ( [WorkZoneID] 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] GO

DestinationDocks

USE [Streme_York] GO

/** Object: Table [dbo].[DestinationDocks] Script Date: 2/28/2024 5:03:47 PM **/ SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

CREATE TABLE [dbo].[DestinationDocks]( [DestinationDockID] [int] IDENTITY(1,1) NOT NULL, [DockCode] varchar NOT NULL, [Description] varchar NOT NULL, [TimeStamp] [timestamp] NULL, [ArrivalTrackingEnabled] [bit] NOT NULL, [Latitude] [numeric](18, 15) NULL, [Longitude] [numeric](18, 15) NULL, [ArrivalDistanceThreshold] [int] NULL, [ArrivalConfirmationScanCode] varchar NULL, CONSTRAINT [PK_DestinationDocks] PRIMARY KEY CLUSTERED ( [DestinationDockID] 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] GO

ALTER TABLE [dbo].[DestinationDocks] ADD CONSTRAINT [DF_DestinationDocks_Description] DEFAULT ('') FOR [Description] GO

ALTER TABLE [dbo].[DestinationDocks] ADD DEFAULT ((0)) FOR [ArrivalTrackingEnabled] GO

ALTER TABLE [dbo].[DestinationDocks] ADD DEFAULT ((100)) FOR [ArrivalDistanceThreshold] GO

ErikEJ commented 7 months ago

Missing Commodity table!

sohaibameenpk007 commented 7 months ago

That is okay, I found the solution for it. I was not selecting the WorkZone and DestionationDocks tables which I did not and its working fine. Thanks for the help @ErikEJ

ErikEJ commented 7 months ago

@sohaibameenpk007 I suspected that was the reason!

ErikEJ commented 7 months ago

If you like my free tools, I would be very grateful for a rating or review on Visual Studio Marketplace or even a one-time or monthly sponsorship