【问题标题】:EF Code First: Creating Customer, Item and Order relationship using pocoEF Code First:使用 poco 创建客户、项目和订单关系
【发布时间】:2013-01-06 10:26:25
【问题描述】:

我正在尝试创建 3 个由 pocos 表示的表,以便首先在代码中使用。

这些表是客户、项目和订单。 (我认为订单是一个很好的命名约定?或者我应该使用 customitem 还是 customeritem?)

我创建了一个带有 ID 和名称、地址等内容的客户表

我创建了一个带有 Id 以及 itemname 和 price 等内容的 item 表。

现在我需要创建一个第三张表来保存客户购买的商品数量。我有一个 ID,所以我需要创建 2 个外键 (int) 1 称为 CustomerId,另一个称为 ItemId - 这是正确的吗?

然后我需要从客户那里创建一个导航属性,以便我可以看到客户购买的所有商品

以及商品的导航属性,以便您查看哪些客户购买了该商品

我有点不知道该怎么做

有没有人有例子或者可以帮助我?

我认为这是一个标准问题,如何创建客户和商品并存储购买了什么但我似乎找不到任何教程

提前致谢

【问题讨论】:

    标签: entity-framework ef-code-first entity-framework-4.1 code-first poco


    【解决方案1】:

    你并不真的需要第三张表,Entity framework 会自动创建第三张表并在内部管理关系。只需将Principal and dependent 放入代码中使用Navigation Properties.

    public partial class Customer
    {
        public Customer()
        {
            this.Items = new HashSet<Item>();
        }
    
        public int CustomerId { get; set; }
        public string CustomerName { get; set; }
        public string CustomerAddress { get; set; }
    
        public virtual ICollection<Item> Items { get; set; }
    }
    
     public partial class Item
    {
        public int ItemId { get; set; }
        public int Price { get; set; }
        public int CustomerCustomerId { get; set; }
    
        public virtual Customer Customer { get; set; }
    }
    

    因此,您可以在customeritem 这两个表之间建立关系。但是,如果您想在关系中添加一些 描述性属性,那么您应该在实体框架中创建新表,其中将包括来自 CustomerItem 类的外键以及您的其他描述性属性比如PurchaseDate

    【讨论】:

    • 感谢您的评论,啊,我没有意识到这一点。但是如果我需要第三张桌子怎么办?你看我需要为客户、项目和订单提供 3 项服务,以及为每个表提供 3 个存储库。你有一个小例子还是你能详细说明一下?再次感谢
    • 您希望客户和商品之间存在一对多关系...对吗?
    • 正好 1 位客户可以拥有许多商品...而 1 项商品可能已被许多客户购买。
    • 嗨,太好了!正是我需要的,我看到的 1 个问题是当客户购买商品时我无法存储,我想这就是我可能需要 3 张桌子的原因?抱歉,上述型号可以吗?
    • 当然,您只能存储和使用此模型。您只需要传递用户信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多