全体。ネットCRUDものは、多くの味と仕事のやり方を備えた大きな分野です。そして、私はあなたがこれでどこにいるのか正確にはわかりませんが、次の私の助けを引き出します。私の経験では、EFは関係をきちんと扱うことができますが、EFの学習プロセス全体が少し険しくて、私はそれから離れています。私は通常、拡張機能を使ってDapperを使い、擬似手動で処理します。私はSimpleCrud拡張を使用していません。あなたはDBを継承しているので、うまくいけばそれはうまくセットアップされており、Distribution、Column EntryIDにはFK制約があります。同様のGridViewで次に
using Dapper.Contrib.Extensions;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace Jacrys
{
[Table("dbo.address_book")]
public partial class AddressBook
{
[Dapper.Contrib.Extensions.Key]
public int EntryID { get; set; }
public string Last_Name { get; set; }
public string First_Name { get; set; }
public string Title { get; set; }
public string Office_Num { get; set; }
public string Cell_Num { get; set; }
public string Home_Num { get; set; }
public string Email_Address { get; set; }
public bool Special_Info { get; set; }
public bool hr24_Emails { get; set; }
public bool hr48_Emails { get; set; }
public bool RM_Emails { get; set; }
public bool Prestige_Emails { get; set; }
public bool GEB_Emails { get; set; }
public bool LAW_Emails { get; set; }
//use this only if you need all of the distributions to be
//part of your main AddressBook class
public IEnumerable<Distribution> Distributions { get; set; }
public static AddressBook GetById(short id)
{
using (IDbConnection cn = new SqlConnection("getConnString"))
{
cn.Open();
return cn.Get<AddressBook>(id);
}
}
public static IEnumerable<AddressBook> GetAll()
{
using (IDbConnection cn = new SqlConnection("getConnString"))
{
cn.Open();
return cn.GetAll<AddressBook>();
}
}
public int Insert()
{
using (IDbConnection cn = new SqlConnection("getConnString"))
{
cn.Open();
return (int)cn.Insert(this);
}
}
public bool Update()
{
using (IDbConnection cn = new SqlConnection("getConnString"))
{
cn.Open();
return cn.Update(this);
}
}
public bool Delete()
{
using (IDbConnection cn = new SqlConnection("getConnString"))
{
cn.Open();
return cn.Delete(this);
}
}
}
[Table("dbo.distribution")]
public partial class Distribution
{
[Dapper.Contrib.Extensions.Key]
public int Key { get; set; }
public int EntryID { get; set; }
public string Brand { get; set; }
public string Location_Mnemonic { get; set; }
public int Location_Code_Numeric { get; set; }
public string Division_Mnemonic { get; set; }
public string Region_Mnemonic { get; set; }
public string Zone_Mnemonic { get; set; }
public string District_Mnemonic { get; set; }
//similar CRUD methods to AddressBook follow here
}
}
:
Dapperのでは、あなたのようなあなたのクラスを設定することができ
<asp:GridView ID="gvAddresses" runat="server" AutoGenerateColumns="true" DataKeyNames="EntryID">
</asp:GridView>
あなたが背後にあるコードでそれを読み込む(とラムダ式を追加することができます事前ソート用):
gvAddresses.DataSource = Jacrys.AddressBook.GetAll().OrderBy(c=>c.Last_Name);
必要なドロップダウンリストは、同様の方法でロードできます。
すべては必要に応じて異なります。 Distributionのグリッドビューがある場合は、編集モードのとき(行データのバインドされたイベントで)、Addressのドロップダウンを追加できます。更新と保存に行くときは、レコードを保存する前に行のコントロールを見つけて、選択した値を解析する必要があります。これを行うには、本当に面白い方法はありません。ただし、すべてのビジネスクラスをCRUDメソッドで設定していれば、より簡単にすべてのビジネスクラスをまとめることができます。
あなたは何が最も問題になっていますか? GridView?クラスを設定しますか?セレクタとしてドロップダウンを使用するgridivewを設定しますか? – secretwep
論理モデルにマップされるクラスを設定します。私はそれがどのように動作すべきかという私の頭の中にモデルを持っていますが、それを起こすことは厄介です。アドレス帳のエントリには複数のディストリビューションが関連付けられていて、新しいディストリビューションを作成したり、既存のディストリビューションを更新することができるクラスを作成する方法が用意されています。 – Jacrys
EntryIDとは何ですか?それは別のテーブルからですか? 1つのアドレスに1つのディストリビューションしか持てないのは本当ですか? – secretwep