अगर मैं ठीक से समझ गया, तो आपके पास एक साझा सर्वर . है और कुछ स्थानीय सर्वर (कंपनी विशिष्ट) जो एक ही संदर्भ में दोनों (एक साझा, एक कंपनी विशिष्ट) की सभी वस्तुओं को रखना चाहते हैं।
मैं आपको दो परिदृश्य दूंगा:
- अनेक-से-अनेक :इस मामले में, संबंध रखने वाली तालिका sharedDB . में है , लेकिन उनके साथ जुड़ने वाली तीसरी तालिका कंपनी विशिष्ट DB . में है ।
- एक से अनेक :इनमें से कौन सी तालिका SharedDB . में है और दूसरा कंपनी विशिष्ट DB . में ।
अनेक-से-अनेक
<एच3>1. SQL साइड में अपना समानार्थी शब्द बनाएँसबसे पहले आपको अपने स्थानीय (या कंपनी विशिष्ट) DB में समानार्थी शब्द बनाना होगा:
CREATE SYNONYM [dbo].[StudentCources] FOR [SharedServer].[SharedDB].[dbo].[StudentCources]
मान लें कि आपकी साझा तालिका में studentID
नाम के दो कॉलम (परवाह नहीं) हैं और courseID
।
आइए मान लें कि हमारे पास स्थानीय डीबी पर दो टेबल हैं जिनमें एक-दूसरे के बीच कई से अधिक संबंध हैं। और मान लीजिए कि तीसरी जॉइनर टेबल (जिसमें चाबियां हैं) साझा डीबी में स्थित है !! (मुझे लगता है कि यह सबसे खराब तरीका है)। तो आपके POCO इस तरह दिखाई देंगे:
Public Class Student
Public Property studentID as Integer
Public Property Name as String
Public Property Courses as ICollection(Of Course)
End Class
और
Public Class Course
Public Property courseID as Integer
Public Property Name as String
Public Property Students as ICollection(Of Student)
End Class
और साझा एक:
Public Class StudentCources
Public Property courseID as Integer
Public Property studentID as Integer
End Class
और संदर्भ इस तरह दिखता है:
Partial Public Class LocalContext
Inherits DbContext
Public Sub New()
MyBase.New("name=LocalContext")
End Sub
Public Overridable Property Students As DbSet(Of Student)
Public Overridable Property Courses As DbSet(Of Course)
Protected Overrides Sub OnModelCreating(ByVal modelBuilder As DbModelBuilder)
modelBuilder.Entity(Of Student).HasMany(Function(e) e.Courses).WithMany(Function(e) e.Students).Map(Sub(e)
e.MapLeftKey("studentID")
e.MapRightKey("courseID")
e.ToTable("StudentCources", "dbo")
End Sub)
End Sub
End Class
OnModelCreating
. में कोड मॉडल निर्माता को बताता है कि संबंध तालिका एक समानार्थी है (सीधे नहीं)। और हम जानते हैं कि पर्यायवाची SharedDB . में है ।
एक से अनेक
कोई कदम नहीं! बस OnModelCreating
को संशोधित करें को:
modelBuilder.Entity(Of Student).ToTable("Students", "dbo")
और ध्यान दें कि इस मामले में Students
एक समानार्थी है . फिर संबंध बनाएं :)