2016-04-11 2 views
0

Я новичок. я использую EF 6.0 с Postgresql (Npgsql V 2.2.5.0)Looping Datasource Entity Framework Database Сначала с использованием Postgresql

Краткое описание:

У меня есть 3 таблицы:

  • поставщик таблицы (ms_supplier) для хранения информации о поставщиках
  • счет-фактура поставщика (nota_supplier) для хранения информации о счетах-фактурах
  • номера банковских счетов (no_rekening_bank) для хранения информации о банковских счетах продавца

База данных создана на 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

ЦЕЛЬ: возможность загружать ms_supplier таблицы и связанный с ними объект (мастер видом детали) с помощью жадной загрузки на окна формы

ПРОБЛЕМА: при использовании запрос, как это:

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_supplier, но мой nota_supplierDataGridView кажется несовместимым с хозяином. enter image description here

СОМНЕНИЯ:

  1. мой чокнутый DataSource показано на рисунке 1, будет вызывать какие-либо проблемы?

  2. - это хэш по умолчанию, установленный в моем классе ms_supplier, в результате чего связанный объект не отображается в notaSupplierDataGridView? да, какой будет правильный тип для загрузки таблицы nota_supplier?

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

наилучшими пожеланиями, Handoko

+0

Что такое проблема? Поскольку у вас есть отношения «один к одному», вы автоматически получаете ссылки между объектами и можете идти туда и обратно. Это вызывает проблемы? –

+0

Привет, Сами, спасибо за ваш ответ. Я не знал, что сообщаемое поведение является нормальным.Моя проблема: мой gridview для nota_supplier пуст, пока ms_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;} 

к:

 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; } 
Смежные вопросы