Fórum Modelo de Entidades suprimiu tabela intermediária #15285
05/02/2010
0
Amigos, tenho 2 tabelas no meu banco, UF e Perfil Fiscal, e uma intermediaria UfPerfil, onde guarda a PK das 2 tabelas.
Tudo perfeito.
Porém no mapeamento do LINQ, a entidade UF aparece com a navigationProperty PerfilFiscal, e eu não tenho acesso a tabela intermediária, ela não existe.
Como eu faço pra gravar na tabela intermediária?
Vou postar os scripts das 3 tabelas, bem como o print das entidades:
UF
CREATE TABLE [Comercial].[UF](
[codigo] [int] IDENTITY(1,1) NOT NULL,
[codigoIBGE] [int] NOT NULL,
[nome] [varchar](50) NOT NULL,
[sigla] [varchar](2) NOT NULL,
[codigoPais] [int] NOT NULL,
CONSTRAINT [PK_UF] PRIMARY KEY CLUSTERED
(
[codigo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [EK_UF] UNIQUE NONCLUSTERED
(
[codigoIBGE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
ALTER TABLE [Comercial].[UF] WITH CHECK ADD CONSTRAINT [FK_UF_Pais] FOREIGN KEY([codigoPais])
REFERENCES [Comercial].[Pais] ([codigo])
GO
ALTER TABLE [Comercial].[UF] CHECK CONSTRAINT [FK_UF_Pais]
GO
--
PERFIL
CREATE TABLE [Fiscal].[PerfilFiscal](
[codigoperfil] [int] IDENTITY(1,1) NOT NULL,
[descricao] [varchar](60) NOT NULL,
[codigoOrigemIcmsDentroEstado] [int] NOT NULL,
[codigoOrigemIcmsForaEstado] [int] NOT NULL,
[codigoSituacaoTributariaIcmsDentroEstado] [int] NOT NULL,
[codigoSituacaoTributariaIcmsForaEstado] [int] NOT NULL,
[codigoModalidadeIcmsDentroEstado] [int] NOT NULL,
[codigoModalidadeIcmsForaEstado] [int] NOT NULL,
[codigoModalidadeIcmsStDentroEstado] [int] NOT NULL,
[codigoModalidadeIcmsStForaEstado] [int] NOT NULL,
[codigoDadosFiscaisIcmsDentroEstado] [int] NOT NULL,
[codigoDadosFiscaisIcmsForaEstado] [int] NOT NULL,
[codigoDadosFiscaisIpi] [int] NOT NULL,
[codigoNcm] [int] NOT NULL,
[codigoSituacaoTributariaIpi] [int] NOT NULL,
[codigoSituacaoTributariaPis] [int] NOT NULL,
[codigoSituacaoTributariaCOFINS] [int] NOT NULL,
[percentualIcmsDentroEstado] [decimal](10, 2) NOT NULL,
[percentualIcmsForaEstado] [decimal](10, 2) NOT NULL,
[percentualReducaoIcmsDentroEstado] [decimal](10, 2) NOT NULL,
[percentualReducaoIcmsForaEstado] [decimal](10, 2) NOT NULL,
[percentualIvaDentroEstado] [decimal](10, 2) NOT NULL,
[percentualIpi] [decimal](10, 2) NOT NULL,
[percentualPis] [decimal](10, 2) NOT NULL,
[percentualCofins] [decimal](10, 2) NOT NULL,
[codigoIcmsPdvDentroEstado] [varchar](1) NOT NULL,
[faixaIcmsPdvDentroEstado] [int] NOT NULL,
[irrf] [varchar](1) NOT NULL,
[inss] [varchar](1) NOT NULL,
[issqn] [varchar](1) NOT NULL,
[csll] [varchar](1) NOT NULL,
[legendaClassificacaoFiscal] [varchar](1) NOT NULL,
CONSTRAINT [PK_PerfilFiscal_1] PRIMARY KEY CLUSTERED
(
[codigoperfil] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
(Não coloquei a criação das fks porque ficaria muito grande o código)
--
UfPerfil
CREATE TABLE [Fiscal].[UFPerfilFiscal](
[codigoUf] [int] NOT NULL,
[codigoPerfilFiscal] [int] NOT NULL,
CONSTRAINT [PK_unidadefederacaoperfilfiscal] PRIMARY KEY CLUSTERED
(
[codigoUf] ASC,
[codigoPerfilFiscal] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [Fiscal].[UFPerfilFiscal] WITH CHECK ADD CONSTRAINT [FK_UFPerfilFiscal_PerfilFiscal] FOREIGN KEY([codigoPerfilFiscal])
REFERENCES [Fiscal].[PerfilFiscal] ([codigoperfil])
GO
ALTER TABLE [Fiscal].[UFPerfilFiscal] CHECK CONSTRAINT [FK_UFPerfilFiscal_PerfilFiscal]
GO
ALTER TABLE [Fiscal].[UFPerfilFiscal] WITH CHECK ADD CONSTRAINT [FK_UFPerfilFiscal_UF] FOREIGN KEY([codigoUf])
REFERENCES [Comercial].[UF] ([codigo])
GO
ALTER TABLE [Fiscal].[UFPerfilFiscal] CHECK CONSTRAINT [FK_UFPerfilFiscal_UF]
GO
E abaixo a print das entidades.
Notemos que a tabela intermediária sumiu, e a tabela Uf ganhou a navigation property PerfilFiscal.
E a questão:
Como eu gravo na tabela intermediária, se ela não aparece?
Obrigado
Tudo perfeito.
Porém no mapeamento do LINQ, a entidade UF aparece com a navigationProperty PerfilFiscal, e eu não tenho acesso a tabela intermediária, ela não existe.
Como eu faço pra gravar na tabela intermediária?
Vou postar os scripts das 3 tabelas, bem como o print das entidades:
UF
CREATE TABLE [Comercial].[UF](
[codigo] [int] IDENTITY(1,1) NOT NULL,
[codigoIBGE] [int] NOT NULL,
[nome] [varchar](50) NOT NULL,
[sigla] [varchar](2) NOT NULL,
[codigoPais] [int] NOT NULL,
CONSTRAINT [PK_UF] PRIMARY KEY CLUSTERED
(
[codigo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [EK_UF] UNIQUE NONCLUSTERED
(
[codigoIBGE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
ALTER TABLE [Comercial].[UF] WITH CHECK ADD CONSTRAINT [FK_UF_Pais] FOREIGN KEY([codigoPais])
REFERENCES [Comercial].[Pais] ([codigo])
GO
ALTER TABLE [Comercial].[UF] CHECK CONSTRAINT [FK_UF_Pais]
GO
--
PERFIL
CREATE TABLE [Fiscal].[PerfilFiscal](
[codigoperfil] [int] IDENTITY(1,1) NOT NULL,
[descricao] [varchar](60) NOT NULL,
[codigoOrigemIcmsDentroEstado] [int] NOT NULL,
[codigoOrigemIcmsForaEstado] [int] NOT NULL,
[codigoSituacaoTributariaIcmsDentroEstado] [int] NOT NULL,
[codigoSituacaoTributariaIcmsForaEstado] [int] NOT NULL,
[codigoModalidadeIcmsDentroEstado] [int] NOT NULL,
[codigoModalidadeIcmsForaEstado] [int] NOT NULL,
[codigoModalidadeIcmsStDentroEstado] [int] NOT NULL,
[codigoModalidadeIcmsStForaEstado] [int] NOT NULL,
[codigoDadosFiscaisIcmsDentroEstado] [int] NOT NULL,
[codigoDadosFiscaisIcmsForaEstado] [int] NOT NULL,
[codigoDadosFiscaisIpi] [int] NOT NULL,
[codigoNcm] [int] NOT NULL,
[codigoSituacaoTributariaIpi] [int] NOT NULL,
[codigoSituacaoTributariaPis] [int] NOT NULL,
[codigoSituacaoTributariaCOFINS] [int] NOT NULL,
[percentualIcmsDentroEstado] [decimal](10, 2) NOT NULL,
[percentualIcmsForaEstado] [decimal](10, 2) NOT NULL,
[percentualReducaoIcmsDentroEstado] [decimal](10, 2) NOT NULL,
[percentualReducaoIcmsForaEstado] [decimal](10, 2) NOT NULL,
[percentualIvaDentroEstado] [decimal](10, 2) NOT NULL,
[percentualIpi] [decimal](10, 2) NOT NULL,
[percentualPis] [decimal](10, 2) NOT NULL,
[percentualCofins] [decimal](10, 2) NOT NULL,
[codigoIcmsPdvDentroEstado] [varchar](1) NOT NULL,
[faixaIcmsPdvDentroEstado] [int] NOT NULL,
[irrf] [varchar](1) NOT NULL,
[inss] [varchar](1) NOT NULL,
[issqn] [varchar](1) NOT NULL,
[csll] [varchar](1) NOT NULL,
[legendaClassificacaoFiscal] [varchar](1) NOT NULL,
CONSTRAINT [PK_PerfilFiscal_1] PRIMARY KEY CLUSTERED
(
[codigoperfil] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
(Não coloquei a criação das fks porque ficaria muito grande o código)
--
UfPerfil
CREATE TABLE [Fiscal].[UFPerfilFiscal](
[codigoUf] [int] NOT NULL,
[codigoPerfilFiscal] [int] NOT NULL,
CONSTRAINT [PK_unidadefederacaoperfilfiscal] PRIMARY KEY CLUSTERED
(
[codigoUf] ASC,
[codigoPerfilFiscal] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [Fiscal].[UFPerfilFiscal] WITH CHECK ADD CONSTRAINT [FK_UFPerfilFiscal_PerfilFiscal] FOREIGN KEY([codigoPerfilFiscal])
REFERENCES [Fiscal].[PerfilFiscal] ([codigoperfil])
GO
ALTER TABLE [Fiscal].[UFPerfilFiscal] CHECK CONSTRAINT [FK_UFPerfilFiscal_PerfilFiscal]
GO
ALTER TABLE [Fiscal].[UFPerfilFiscal] WITH CHECK ADD CONSTRAINT [FK_UFPerfilFiscal_UF] FOREIGN KEY([codigoUf])
REFERENCES [Comercial].[UF] ([codigo])
GO
ALTER TABLE [Fiscal].[UFPerfilFiscal] CHECK CONSTRAINT [FK_UFPerfilFiscal_UF]
GO
E abaixo a print das entidades.
Notemos que a tabela intermediária sumiu, e a tabela Uf ganhou a navigation property PerfilFiscal.
E a questão:
Como eu gravo na tabela intermediária, se ela não aparece?
Obrigado
Daniel Vieira
Curtir tópico
+ 0
Responder
Posts
06/02/2010
Fabio Mans
Olá Daniel, para resolver crie um campo IDENTITY na sua tabela auxiliar, assim o Entity irá criar esta tabela, também abra o diagrama botão direito (Open With) com XML e percebe que irá encontrar um erro parecido com o erro abaixo.
Só que no exemplo eu fiz Clube, Jogador e JogadorXClube, como não coloquei IDENTITY no JogadorXClube ocorreu um erro e ele não gerou corretamente.
warning 6013: The table/view 'DevMedia.dbo.Clube_Jogador' does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity you will need to review your schema, add the correct keys and uncomment it.
<EntityType Name="Clube_Jogador">
<Property Name="ClubeID" Type="int" />
<Property Name="JogadorID" Type="int" />
</EntityType>-->
Espero ter ajuado
Fabio
Responder
Gostei + 0
11/02/2010
Fabio Mans
Posso ajudar em mais alguma coisa?
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)