2016-09-15 8 views
2

データベース構造
私はこのような構造を持つ非常に非正規化されたSQLテーブルを持っている:テーブルを1対多数の関係を持つEFクラスに分割することはできますか?

CREATE TABLE logistix.shipments 
(
    shipment_id INT NOT NULL PRIMARY KEY, 
    destination_id NVARCHAR(15) NOT NULL PRIMARY KEY, 
    pallet_id INT NOT NULL PRIMARY KEY, 
    destination_order INT NOT NULL, 
    pallet_description NVARCHAR(40) NOT NULL 
) 

それぞれ特定のレコードがユニークですが、1つの出荷は複数の宛先に行く複数のパレットを持つことができます。

.NETインタフェース
これは私がこのような構造にするEFオブジェクト、によって操作されようとしている:私は分割のチュートリアルを見つけたものの

class ShippingContext : DbContext 
{ 
     public virtual DbSet<Shipment> Shipments {get; set;} 
} 

class Shipment 
{ 
    int ShipmentId {get; set;} 
    List<Destination> ShipmentStops {get; set;} 
} 

class Destination 
{ 
    string DestinationId {get; set;} 
    int DestinationOrder {get; set;} 
    List<Pallet> Pallets {get; set;} 
} 

class Pallet 
{ 
    int PalletId {get; set;} 
    string PalletDescription {get; set;} 
} 

問題
テーブルを1対1エンティティにマッピングし、外部キーデータをEFのコレクションにマッピングすると、あるテーブルの列をコレクションにマッピングすることについて何も見つかりません。これは可能ですか、テーブルを分割する、ビューを作成する、または各列のプロパティを持つPOCOクラスを作成することに限定していますか?

Endmatter
出荷の任意の数のレポートを生成するためのSQLテーブルにアクセスする別のアプリケーション、そうではなく正規化された表とのスイートよりも、パフォーマンスのために非正規化テーブルを使用することを選択したことパワーズビューには、取得に時間がかかります。

答えて

2

あなたのクラスは何かリンクこの

public class ShipmnetContext : DbContext 
{ 
    public DbSet<Shipment> Shipments { get; set; } 
    public DbSet<Destination> Destinations { get; set; } 
    public DbSet<Pallet> Pallets { get; set; } 
} 

public class Shipment 
{ 
    public int ShipmentId { get; set; } 
    public ICollection<Destination> ShipmentStops { get; set; } 

    public Shipment() 
    { 
     ShipmentStops = new HashSet<Destination>(); 
    } 
} 

public class Destination 
{ 
    [Key] 
    public string DestinationId { get; set; } 
    public int DestinationOrder { get; set; } 
    //[Required] 
    public Shipment Shipment { get; set; } //Foreign key to Shipment table, make property NotNull by adding [Required] attribute 
    public ICollection<Pallet> Pallets { get; set; } 

    public Destination() 
    { 
     Pallets = new HashSet<Pallet>(); 
    } 
} 

public class Pallet 
{ 
    public int PalletId { get; set; } 
    public string PalletDescription { get; set; } 
    public Destination Destination { get; set; } //Foreign key to Destination table 
} 
+0

MulţumescのMULTになります!どのようにこれらのいずれかに書き込むだろうか? – JAF

関連する問題