2016-04-11 22 views
0

私は初心者です。 私は、PostgreSQLとEF 6.0(NpgsqlののV 2.2.5.0)ルーピングデータソースエンティティフレームワークデータベースPostgresqlを初めて使用

簡単な説明を使用しています:

  • サプライヤーテーブル(ms_supplier)サプライヤー
  • についての情報を格納するための:

    私は3つのテーブルを持っています請求書に関する情報を保存するための仕入先請求書(nota_supplier)

  • 仕入先銀行口座情報に関する情報を格納するための仕入先銀行口座番号(no_rekening_bank)info

Postgresqlの上に作成データベース:

CREATE TABLE ms_supplier 
(
    ms_supplier_id bigint NOT NULL DEFAULT nextval('ms_supplier_id_seq'::regclass), 
    kode_supplier text NOT NULL, 
    nama_supplier text NOT NULL, 
    alamat text NOT NULL, 
    tempo integer, 
    keterangan_tambahan text, 
    CONSTRAINT ms_supplier_id PRIMARY KEY (ms_supplier_id) 
) 

CREATE TABLE nota_supplier 
(
    nota_supplier_id bigserial NOT NULL, 
    tanggal_nota date NOT NULL, 
    nominal numeric NOT NULL, 
    ms_supplier_id bigint NOT NULL, 
    status_pembayaran boolean NOT NULL, 
    keterangan text, 
    tanggal_jatuh_tempo date NOT NULL, 
    tanggal_barang_datang date NOT NULL, 
    nomer_nota text NOT NULL, 
    tanggal_input date, 
    diinput_oleh text, 
    CONSTRAINT nota_supplier_id PRIMARY KEY (nota_supplier_id), 
    CONSTRAINT ms_supplier_id FOREIGN KEY (ms_supplier_id) 
     REFERENCES ms_supplier (ms_supplier_id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION 
) 
CREATE TABLE rekening_bank_supplier 
(
    rekening_bank_id bigserial NOT NULL, 
    nama_bank text NOT NULL, 
    nomer_rekening text NOT NULL, 
    nama_pemilik_rekening text NOT NULL, 
    ms_supplier_id bigint NOT NULL, 
    CONSTRAINT rekening_bank_id PRIMARY KEY (rekening_bank_id), 
    CONSTRAINT ms_supplier_id FOREIGN KEY (ms_supplier_id) 
     REFERENCES ms_supplier (ms_supplier_id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION 
) 

更新:除去edmc画像最初のデータベースから生成されたリンク制限

クラス理由:

public partial class ms_supplier 
     { 
      public ms_supplier() 
      { 
       this.ms_barang = new HashSet<ms_barang>(); 
       this.telpon_supplier = new HashSet<telpon_supplier>(); 
       this.rekening_bank_supplier = new HashSet<rekening_bank_supplier>(); 
       this.nota_supplier = new HashSet<nota_supplier>(); 
      } 

      public long ms_supplier_id { get; set; } 
      public string kode_supplier { get; set; } 
      public string nama_supplier { get; set; } 
      public string alamat { get; set; } 
      public Nullable<int> tempo { get; set; } 
      public string keterangan_tambahan { get; set; } 

      public virtual ICollection<ms_barang> ms_barang { get; set; } 
      public virtual ICollection<telpon_supplier> telpon_supplier { get; set; } 
      public virtual ICollection<rekening_bank_supplier> rekening_bank_supplier { get; set; } 
      public virtual ICollection<nota_supplier> nota_supplier { get; set; } 
     } 
    } 


    public partial class nota_supplier 
     { 
      public long nota_supplier_id { get; set; } 
      public System.DateTime tanggal_nota { get; set; } 
      public decimal nominal { get; set; } 
      public long ms_supplier_id { get; set; } 
      public bool status_pembayaran { get; set; } 
      public string keterangan { get; set; } 
      public System.DateTime tanggal_jatuh_tempo { get; set; } 
      public System.DateTime tanggal_barang_datang { get; set; } 
      public string nomer_nota { get; set; } 
      public Nullable<System.DateTime> tanggal_input { get; set; } 
      public string diinput_oleh { get; set; } 

      public virtual ms_supplier ms_supplier { get; set; } 
     } 

public partial class rekening_bank_supplier 
    { 
     public long rekening_bank_id { get; set; } 
     public string nama_bank { get; set; } 
     public string nomer_rekening { get; set; } 
     public string nama_pemilik_rekening { get; set; } 
     public long ms_supplier_id { get; set; } 

     public virtual ms_supplier ms_supplier { get; set; } 
    } 

public partial class telpon_supplier 
{ 
    public long telpon_id { get; set; } 
    public string jenis_telpon { get; set; } 
    public string nomer_telpon { get; set; } 
    public long ms_supplier_id { get; set; } 

    public virtual ms_supplier ms_supplier { get; set; } 
} 
public partial class HMERPEntities : DbContext 
    { 
     public HMERPEntities() 
      : base("name=HMERPEntities") 
     { 
      this.Configuration.LazyLoadingEnabled = false; 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      throw new UnintentionalCodeFirstException(); 
     } 

     public virtual DbSet<kategori_barang> kategori_barang { get; set; } 
     public virtual DbSet<kategori_kontak> kategori_kontak { get; set; } 
     public virtual DbSet<ms_barang> ms_barang { get; set; } 
     public virtual DbSet<ms_user> ms_user { get; set; } 
     public virtual DbSet<penggolongan_warna> penggolongan_warna { get; set; } 
     public virtual DbSet<satuan> satuans { get; set; } 
     public virtual DbSet<warna> warnas { get; set; } 
     public virtual DbSet<ms_setoran_toko> ms_setoran_toko { get; set; } 
     public virtual DbSet<ms_supplier> ms_supplier { get; set; } 
     public virtual DbSet<telpon_supplier> telpon_supplier { get; set; } 
     public virtual DbSet<rekening_bank_supplier> rekening_bank_supplier { get; set; } 
     public virtual DbSet<nota_supplier> nota_supplier { get; set; } 
    } 

、次にデータソースを追加して、それがルーピーに見える: loopy datasource

GOAL: このようなクエリを使用して::ms_supplierテーブルと関連するエンティティをロードすることができ(マスター・ディテール・ビュー)積極的なロードを使用しては、Windowsフォーム

PROBLEMに

using (var context = new HMERPEntities()) 
      { 
       context.Configuration.LazyLoadingEnabled = false; 
       var query = context.ms_supplier.Include("nota_supplier").ToList(); 
       ms_supplierBindingSource.DataSource = query; 
} 

私ms_supplierテーブルが細かいロード、私はnota_supplierDataGridView nota_supplierテーブルについてのいくつかのデータを見ることができるクエリ結果では、マスターと正しくバインドしていないようです。 enter image description here

疑問:

  1. は画像1に示した私の愚かデータソースは、任意の問題が発生しますか?

  2. は、ms_supplierクラスのデフォルトタイプのハッシュセットで、関連するエンティティがnotaSupplierDataGridViewに表示されません。はい、nota_supplierテーブルをロードするための正しいタイプは何ですか?

     this.nota_supplier = new HashSet<nota_supplier>(); 
    

よろしく、 Handoko

+0

:に

 public virtual <ms_barang> ms_barang { get; set; } public virtual <telpon_supplier> telpon_supplier { get; set; } public virtual <rekening_bank_supplier> rekening_bank_supplier { get; set; } public virtual <nota_supplier> nota_supplier { get; set;} 

? 1対1の関係があるので、自動的にオブジェクト間のリンクが得られ、前後に移動できます。それは問題を引き起こしていますか? –

+0

こんにちはサミ、あなたの返事をありがとう。報告された行動が正常な行動であることは知らなかった。私の問題は:nota_supplierのための私のgridviewは、ms_supplierが正常に動作している間は空です。 – handoko

答えて

0

私はから私のコードを変更することでこの問題を解決:問題は何

 public virtual ICollection<ms_barang> ms_barang { get; set; } 
     public virtual ICollection<telpon_supplier> telpon_supplier { get; set; } 
     public virtual ICollection<rekening_bank_supplier> rekening_bank_supplier { get; set; } 
     public virtual ICollection<nota_supplier> nota_supplier { get; set; } 
関連する問題