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
Daniel Vieira

Daniel Vieira

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar