Я новичок. я использую 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
СОМНЕНИЯ:
мой чокнутый DataSource показано на рисунке 1, будет вызывать какие-либо проблемы?
- это хэш по умолчанию, установленный в моем классе ms_supplier, в результате чего связанный объект не отображается в notaSupplierDataGridView? да, какой будет правильный тип для загрузки таблицы nota_supplier?
this.nota_supplier = new HashSet<nota_supplier>();
наилучшими пожеланиями, Handoko
Что такое проблема? Поскольку у вас есть отношения «один к одному», вы автоматически получаете ссылки между объектами и можете идти туда и обратно. Это вызывает проблемы? –
Привет, Сами, спасибо за ваш ответ. Я не знал, что сообщаемое поведение является нормальным.Моя проблема: мой gridview для nota_supplier пуст, пока ms_supplier работает нормально. – handoko