2017-09-29 8 views
0

以下のシナリオ(以下のコード)をテストしています。店舗、レジ係、現金机およびそれを操作する人がいるショッピングモールを作成します。Entity Framework:テーブルのテーブルを解決する方法

だから私は作成した以下のクラス

  • モール
  • ショップ
  • CashDesk

IDと名前を持つ基本クラス。

Personの派生クラスがPersonCashierまたはPersonCustomerである必要があります。

すべてが関連しているので、多対多のシナリオの交差テーブルを作成する必要があります。 MallShop

  • 店がCashDesks含まれています:MallShopCashDesk
  • そしてレジ含むCashDesk:MallShopCashDeskPersonCashier

    • モール店が含まれています

      私は、次の交差点テーブルを作成しました

    これは正しく感じません。誰でもベストプラクティスで私を助けることができます

    public class Mall 
    { 
        public int Id { get; set; } 
        [Required] 
        [MaxLength(100)] 
        public string Name { get; set; } 
        [Required] 
        public int NumberOfShopSpaces { get; set; } 
    } 
    
    public class Shop 
    { 
        public int Id { get; set; } 
        [Required] 
        [MaxLength(100)] 
        public string Name { get; set; } 
    } 
    
    public class CashDesk 
    { 
        public int Id { get; set; } 
        [Required] 
        public string Name { get; set; } 
    } 
    public class Person 
    { 
        public int Id { get; set; } 
        [Required] 
        public string FullName { get; set; } 
        [Required] 
        public string Gender { get; set; } 
    } 
    public class PersonCashier : Person 
    { 
        [Required] 
        public int ShopId { get; set; } 
        public virtual Shop Shop { get; set; } 
    } 
    

    これらは基本クラスです。ショッピングモールに店を、店に現金を、店舗に現金を追加するにはどうすればよいですか?

  • 答えて

    1
    public class Mall 
    { 
        public int Id { get; set; } 
        [Required] 
        [MaxLength(100)] 
        public string Name { get; set; } 
        [Required] 
        public int NumberOfShopSpaces { get; set; } 
    
        List<Shop> CurrentShops { get; set; } 
    } 
    
    public class Shop 
    { 
        public int Id { get; set; } 
        [Required] 
        [MaxLength(100)] 
        public string Name { get; set; } 
    
        public List<CashDesk> CashDesks { get;set; } 
    } 
    

    (私はたくさん試してみたが、コードを投稿する質問がスパゲッティのように見えるようになります)私が店にモールクラスのショップやCashDesksのリストを追加しました。これはショッピングモールにあるお店のリストと、各ショップの現金デッキのリストを提供し、必要なものはすべてこの方法に従うことができます。

    データベースをお持ちの場合は、モールテーブルとショップテーブルがあります。

    ショップテーブルには、モールテーブルへの外部キーがあります。リンクする方法です。これは上部のクラス構造と連動します。

    また、MallShopsと呼ばれる別のテーブルを2つ持ちます.1つはMallID、もう1つはShopIDです。これはリンクテーブルと呼ばれます。

    2つのアプローチは、ロットショップにリンクされた多くのモールでより複雑な構造を可能にします。

    まずデータベース構造から始めて、必要なものをすべてカバーしてから、クラスなどを意味のある方法で実行できます。EntityFrameworkのようなものを使用すると、データベース構造の準備が整ったら、すべてのクラスが作成されます。

    1

    これが最初のコードの場合、EFが関係テーブルを作成します。あなたはクラス内の関係を追加するだけです。

    あなたが望むのは、あなたが望む関係によって決まるからです。

    public class CashDesk 
    { 
        public List<PersonCashier> Cashiers { get; set; } 
    } 
    
    public class PersonCashier : Person 
    { 
        public List<CashDesk> CashDesks { get; set; } 
    } 
    

    (簡潔にするためにすべてのフィールドを示していない)

    :あなたは、多くの多PersonCashierとCashDesk間をしたい場合には、このようなものです
    関連する問題