簡體   English   中英

在SQL Server中創建一個表,其中的名稱是C#中的變量?

[英]Create a table in SQL Server where the name is a variable in C#?

使用Visual Studio和SSMS。

我有一個用戶注冊用戶名的表單,它的存儲方式如下:

List<SqlParameter> sqlNewTable = new List<SqlParameter>();
sqlNewTable.Add(new SqlParameter("Username", txtUser.Text));
DAL.ExecSP("CreateUserCourses", sqlNewTable);

從那里,我可以創建一個名為CreateUserCourses的存儲過程,在其中創建一個新表,用戶在其中輸入(他們的用戶名)是新表的名稱嗎?

當然可以,但是為什么呢?

假設您有一個User表和一個Course表。 然后只需制作第三個表即可將這些表映射在一起,稱為UserCourses 這稱為“多對多”(映射表),它將包含UserCourse的ID以及其他任何相關信息。

這將使您的生活更加輕松

多對多(數據模型)

多對多關系是一種基數,是指兩個實體1 A和B之間的關系,其中A可能包含一個父實例,而B中有許多子對象,反之亦然。

例如,將A視為作者,將B視為書籍。 作者可以寫幾本書,一本書可以由幾位作者寫

student: student_id, first_name, last_name
classes: class_id, name, teacher_id
student_classes: class_id, student_id     // mapping table

SQL查詢可能看起來像這樣

讓所有學生上課

SELECT s.student_id, last_name
FROM student_classes sc 
INNER JOIN students s ON s.student_id = sc.student_id
WHERE sc.class_id = X

為學生准備所有課程

SELECT c.class_id, name
FROM student_classes sc 
INNER JOIN classes c ON c.class_id = sc.class_id
WHERE sc.student_id = Y

實體框架查詢可能看起來像這樣

讓所有學生上課

var students = db.Students.Where(x => x.StudentClasses
                                       .Any(y => y.ClassId == 1);

為學生准備所有課程

var classes = db.classes.Where(x => x.StudentClasses
                                     .Any(y => y.StudentId == 1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM