gpt4 book ai didi

c# - Entity Framework 覆盖另一条记录的外键

转载 作者:行者123 更新时间:2023-12-05 04:26:16 26 4
gpt4 key购买 nike

这只是一个例子,所以你可以理解,这是一个有人们和他们最喜欢的书的系统。

这是模型的样子:

public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public List<Book> favBooks { get; set; }
}

public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public int PageCount { get; set; }
}

我的问题是,如果我添加一本书和两个人,并且都将这本书作为 FAV 书,那么一个人会被覆盖。

Book mathForDummies = new Book()
{
Name = "Math for Dummies",
PageCount = 457
};

_db.book.Add(mathForDummies);
_db.SaveChanges();

Person lena = new Person()
{
Name = "Lena",
favBooks = new List<Book>
{
mathForDummies
}
};

Person max = new Person()
{
Name = "Max",
favBooks = new List<Book>
{
mathForDummies
}
};

_db.person.Add(lena);
_db.person.Add(max);

_db.SaveChanges();

在这种情况下,两者都有这本书,但 max 覆盖了 lena。

person-table book-table

有没有更好的方法,还是我忽略了什么?

最佳答案

您的问题不在于 Entity Framework 本身,而在于您的数据库架构:您的列表是 n 对一(或多对一)关系,您需要 n 对 n(或多对-很多)。

由于 book 表只有一个 PersonId 列(可能有不同的名称),每本书一次只能与一个人相关联。要创建 n 对 n 关系,您需要一个连接表(具有 BookIdPersonId 列)。

this link查看如何配置它。

关于c# - Entity Framework 覆盖另一条记录的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73094224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com