Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Mã khung thực thể đầu tiên với từ đồng nghĩa SQL Server

Nếu tôi hiểu đúng, bạn có SharedServer và một số Máy chủ cục bộ (công ty cụ thể) muốn có tất cả các đối tượng của cả hai (một đối tượng được chia sẻ, một đối tượng cụ thể của công ty) trong một ngữ cảnh duy nhất.

Tôi sẽ cung cấp cho bạn hai tình huống:

  1. Nhiều đến Nhiều :trong trường hợp này, bảng có quan hệ nằm trong sharedDB , nhưng bảng thứ ba kết hợp với chúng, nằm trong DB cụ thể của công ty .
  2. Một-nhiều :một trong các bảng nằm trong SharedDB và cái còn lại trong DB cụ thể của công ty .

Nhiều đến Nhiều

1. Tạo từ đồng nghĩa của bạn trong SQL side

Trước tiên, bạn phải tạo từ đồng nghĩa trong DB địa phương của bạn (hoặc công ty cụ thể):

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

giả sử rằng bảng được chia sẻ của bạn có hai cột (không quan tâm) có tên là studentIDcourseID .

2. Tạo POCOs

Giả sử chúng ta có hai bảng trên DB cục bộ có mối quan hệ Nhiều-Nhiều giữa nhau. và giả sử bảng nối thứ ba (chứa các khóa) nằm trong DB chung !! (Tôi nghĩ đó là cách tồi tệ nhất). vì vậy POCO của bạn sẽ giống như sau:

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

Được chia sẻ một:

Public Class StudentCources
    Public Property courseID as Integer
    Public Property studentID as Integer
End Class

và bối cảnh giống như sau:

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

mã trong OnModelCreating cho người xây dựng mô hình biết rằng bảng quan hệ là một từ đồng nghĩa (không trực tiếp). và chúng tôi biết rằng từ đồng nghĩa trong SharedDB .

Một-nhiều

Không có bước! Chỉ cần sửa đổi OnModelCreating tới:

modelBuilder.Entity(Of Student).ToTable("Students", "dbo")

và lưu ý rằng trong trường hợp này Students là một Từ đồng nghĩa . sau đó tạo mối quan hệ :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-sql - xác định xem giá trị có phải là số nguyên hay không

  2. Cách hiểu về kiểu dữ liệu địa lý của máy chủ SQL

  3. Sự kiện chờ SQL Server -1

  4. Thu thập số lượng từ một truy vấn SQL

  5. Làm thế nào để bỏ một bảng nếu nó tồn tại?