Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर समानार्थक शब्द के साथ पहले इकाई फ्रेमवर्क कोड

अगर मैं ठीक से समझ गया, तो आपके पास एक साझा सर्वर . है और कुछ स्थानीय सर्वर (कंपनी विशिष्ट) जो एक ही संदर्भ में दोनों (एक साझा, एक कंपनी विशिष्ट) की सभी वस्तुओं को रखना चाहते हैं।

मैं आपको दो परिदृश्य दूंगा:

  1. अनेक-से-अनेक :इस मामले में, संबंध रखने वाली तालिका sharedDB . में है , लेकिन उनके साथ जुड़ने वाली तीसरी तालिका कंपनी विशिष्ट DB . में है ।
  2. एक से अनेक :इनमें से कौन सी तालिका SharedDB . में है और दूसरा कंपनी विशिष्ट DB . में ।

अनेक-से-अनेक

<एच3>1. SQL साइड में अपना समानार्थी शब्द बनाएँ

सबसे पहले आपको अपने स्थानीय (या कंपनी विशिष्ट) DB में समानार्थी शब्द बनाना होगा:

CREATE SYNONYM [dbo].[StudentCources] FOR [SharedServer].[SharedDB].[dbo].[StudentCources]

मान लें कि आपकी साझा तालिका में studentID नाम के दो कॉलम (परवाह नहीं) हैं और courseID

<एच3>2. पीओसीओ बनाएं

आइए मान लें कि हमारे पास स्थानीय डीबी पर दो टेबल हैं जिनमें एक-दूसरे के बीच कई से अधिक संबंध हैं। और मान लीजिए कि तीसरी जॉइनर टेबल (जिसमें चाबियां हैं) साझा डीबी में स्थित है !! (मुझे लगता है कि यह सबसे खराब तरीका है)। तो आपके 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 एक समानार्थी है . फिर संबंध बनाएं :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2012 के लिए प्रदर्शन-संबंधी फ़िक्सेस

  2. टी-एसक्यूएल में मूल्यों की सूची में कॉलम की तुलना करना

  3. वर्चर और nvarchar SQL सर्वर डेटा प्रकारों के बीच मुख्य प्रदर्शन अंतर क्या हैं?

  4. कई इंडेक्स वाली टेबल के लिए स्लो बल्क इंसर्ट

  5. मैं SQL सर्वर में जॉइन के साथ एक अद्यतन विवरण कैसे कर सकता हूं?