WPF中使用EF和SQLite的多对多关系

时间:2016-02-13 19:26:35

标签: c# wpf sqlite

我正在关注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,因此我不确定它们是如何工作的。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

如果您使用多对多联接表,那么您的每个类都应该有一个联接表的列表。

它无法像你想象的那样发挥作用。

答案 2 :(得分:0)

你确定没有第三个实体是个好主意吗?

假设您的两个实体是DepartmentStoreProduct,这是n:n关系的典型示例。百货商店可以销售许多产品,许多百货商店也可以提供产品。这导致第三个实体连接上面的两个,在上面的例子中,这就像ProductAvailability。 如果你仔细考虑它,那么你可能会意识到新的连接实体可能具有自己的属性。在我的示例中,这可能是NumberOfProducts,将说明某个百货商店中产品的可用数量。

根据我的经验,连接实体的真实价值不仅仅是连接其他两个实体,这是很常见的。

我还看了一下关于AlbumArtist个实体的示例。 您是否希望创建一个数据模型,其中Album可以由多个Artist创建?

答案 3 :(得分:0)

实体框架没有自动多对多映射。 除此之外,您可以将A和B映射到中间表为一对多。

如果您没有义务只使用EF,我建议您尝试使用NHibernate ORM。 它具有方便的多对多映射,通常更强大。