Varlık Framework 4.0'ın benzersiz endeksine sahip bir tablo tarafından desteklenen bir varlık için bir ilişki oluşturmadığı bir senaryoda karşılaştım ve nedenini merak ediyorum. Diyelim ki, SQL Server 2008 R2 ve yabancı anahtar ilişkisi içinde iki tablo var diyelim:Neden EF 4, benzersiz dizine sahip sütuna FK ilişkisi için ilişki oluşturmuyor?
temel kurulum şudur Üstelik
CREATE TABLE [dbo].[User](
[Id] [int] IDENTITY(1,1) NOT NULL,
[GroupId] [int] NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Group](
[Id] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Group] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[User] WITH CHECK ADD CONSTRAINT [FK_User_Group]
FOREIGN KEY([GroupId])
REFERENCES [dbo].[Group] ([Id])
aşağıdaki indeksi varsayalım mevcuttur:
CREATE NONCLUSTERED INDEX [IX_Group] ON [dbo].[Group]
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Visual Studio 2010'da tasarımcıya bir ADO.NET Varlık Veri Modeli oluşturduğumu bildirirseniz, User
ve Group
, User
numaralı Group
adlı Gezinme Özelliğine sahip bir model alır. Hepsi iyi ve iyi.
Şimdi, indeks bu benziyordu yerine varsayalım:
olduğunuCREATE UNIQUE NONCLUSTERED INDEX [IX_Group] ON [dbo].[Group]
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
, Yaptığım sadece şey indeksi benzersiz bir dizin açmak. Bunu yaptıktan sonra, Visual Studio'nun tasarımcısına bir Varlık Modeli oluşturduğunu söylediğimde, kullanıcılar ve gruplar arasındaki ilişki görünmez ve User
hiçbir gezinme özelliğine sahip değildir. Oluşturulan EDMX dosyasını incelemek, depolama modelinin hiçbir AssociationSet'e sahip olmadığını ortaya çıkarır. Bu yüzden
Herkes açıklayabilir misiniz? Benzersiz endeks neden EF'in ilişkiyi modellemesini engelliyor?
Teşekkür ederiz.
Hmm, belki haklısınız ama Linq2SQL bu senaryoyu işleyebilir. Ayrıca, EDMX'e uygun AssociationSets vb .'yi el ile ekleyebilirim ve gayet iyi çalışıyor, bu yüzden EF'in neden vazgeçtiğini anlamıyorum. – Rune
bir sürü adam, ben navigasyon özellikleri neden haritalama değil, soruşturma bana yardımcı olduğunu araştırıyor 1 saatten fazla israf etti. tekrar teşekkürler –