我正在关注this教程,以便为我的WPF应用程序实现本地数据库(使用SQLite)。
一切都按预期工作,虽然我有一个逻辑问题我不知道如何使用这种方法来解决。我将在下面简化它。
数据库方面,我有2个表(A,B),它们共享多对多关系,因此也需要一个JOIN表(ABJoin)。
在我的实际代码中,我只想使用2个模型:A和B,每个模型都有另一个类型的列表。像这样:
public class A {
// ...fields
List<B> bList;
}
public class B {
// ...fields
List<A> aList;
}
如何在EF + SQLite中实现?
在线搜索,我找到了一些解决方案,但没有什么适用于SQLite,因此我不确定它们是如何工作的。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您使用多对多联接表,那么您的每个类都应该有一个联接表的列表。
它无法像你想象的那样发挥作用。
答案 2 :(得分:0)
你确定没有第三个实体是个好主意吗?
假设您的两个实体是DepartmentStore
和Product
,这是n:n关系的典型示例。百货商店可以销售许多产品,许多百货商店也可以提供产品。这导致第三个实体连接上面的两个,在上面的例子中,这就像ProductAvailability
。
如果你仔细考虑它,那么你可能会意识到新的连接实体可能具有自己的属性。在我的示例中,这可能是NumberOfProducts
,将说明某个百货商店中产品的可用数量。
根据我的经验,连接实体的真实价值不仅仅是连接其他两个实体,这是很常见的。
我还看了一下关于Album
和Artist
个实体的示例。
您是否希望创建一个数据模型,其中Album
可以由多个Artist
创建?
答案 3 :(得分:0)
实体框架没有自动多对多映射。 除此之外,您可以将A和B映射到中间表为一对多。
如果您没有义务只使用EF,我建议您尝试使用NHibernate ORM。 它具有方便的多对多映射,通常更强大。