sqlite 如何自动分配外键?

ff29svar  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(122)

我使用的是SQLite浏览器和Dapper。如何将外键从一个表自动分配到另一个表?我正在尝试将课程对象的列保存到Course表中。以及如何将Course表列PersonID分配给Person表列Person ID
我的想法是传入一个PersonModel对象和一个CourseModel对象,并以某种方式使用Execute方法为course.PersonID列赋值。但我不能让它起作用。

internal class Program
{
    private static void Main(string[] args)
    {
        PersonModel person = new PersonModel("Jeff");
        CourseModel course = new CourseModel("History");

        DBAccess.SavePerson(person);
        DBAccess.AddCourse(person, course);

        Console.ReadLine();
    }
}

public class PersonModel
{
    public int PersonID { get; set; }
    public string Name { get; set; }

    public PersonModel(string name)
    {
        Name = name;
    }
}

public class CourseModel
{
    public int CourseID { get; set; }
    public string CourseName { get; set; }
    public int PersonID { get; set; }

    public CourseModel(string name)
    {
        CourseName = name;
    }
}

public class DBAccess
{
    public static string LoadConnectionString(string id = "Default")
    {
        return ConfigurationManager.ConnectionStrings[id].ConnectionString;
    }

    public static void SavePerson(PersonModel person)
    {
        using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
        {
            cnn.Execute("insert into Person (Name) values (@Name)", person);
        }
    }

    public static void AddCourse(PersonModel person, CourseModel course)
    {
        // I want to log the vales of the course and somewhow assign the "person personid" to the "course personid" which is set as the foreign key in SQLite Browser.

        using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
        {
            cnn.Execute("insert into Course (CourseName) values (@CourseName)", course);
        }
    }
}
gajydyqb

gajydyqb1#

应该只是:

cnn.Execute("Insert into Course (CourseName, PersonId) values 
(@CourseName,@PersonId)", new { CourseName = course.CourseName, PersonId = 
person.PersonId)`

如果Course已经填充了其Person ID,则不需要通过该方法发送它,只需在上面的查询中使用它。

相关问题