基本的なタスクの解決策を達成するには:
Sql Data table
WebSite アプリケーションのソースとして複数の を操作する...
それが私をここに再び導くものです...経験豊富な C# .net
開発者のヘルプを探しています。
私は、適切な実装のためにいくつかの基本的なロジックを追加しようとしていました.
専用の名前空間とクラス、すべての参照を保持するためDATABASE tables
、
(私が仕事をする前に/Entities Framework
アプローチについて学ぶ。)
...の基本機能と同じものを自分で実装してみたいと思いEF
ます。そのようにして、クラスを適切に操作する方法も学びます。
これまでのところ...構造化されているため、 私の少しの知識で
「ヘルパー」.. namespace
、会社名は次のとおりです。HT technologies
そのため、名前空間に名前を付けました HT_DbSchema
...次を含む:
- テーブル名
public sealed class HTDB_Tables
{
public const string Customers= "Customers";
public const string Times= "Times";
}
- テーブルID
public sealed class HT_tblIDs
{
public const int tblCustomersID = 1, tblTimesID = 2;
}
- テーブル列 リスト...(ほんの一例)
public class HTDB_Cols
{
public class tblCustomers
{
public const string CustId = "custId",
CustName = "custName",
CellPhone = "cellPhone" .... etc'
}
}
そして、これら 3 つのクラスすべてがすべてのプロジェクトにサービスを提供しているため..
constructor
Per Table For the Current Project用の別のヘルパー クラスがあります。
public class DBMetaDetails
{
public struct DbTable
{
public string TableName { get; set; }
public int TableID { get; set; }
}
}
それでもこれらはすべて構築/ヘルパー クラスであり、プロジェクトから分離されています。
今現在のプロジェクトのために
プロジェクト内で上記のクラスとコンストラクターを使用して、それを行うための適切な方法は何ですか (私はそれらのテンプレートに名前を付けることができます)
いくつかの順序を実装するためにこれまで行っていたことは次のとおりです。
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
.... some other App inits here
}
else
{
}
// this method should be the one that instanciates the DbTable struct
//and set the values of tables name and "ID"
setTablesReferences();
}
そして、ここで混乱が始まります:
日々の使用法で、WebSiteアプリケーションに実装してみたいと思います:
public void setTableReferences()
{
DBMetaDetails.DbTable CustMeta = new DBMetaDetails.DbTable();
DBMetaDetails.DbTable TimesMeta = new DBMetaDetails.DbTable();
}
だから今、私はCustMeta
&TimesMeta
詳細を設定する必要があります ( id
s & name
s)
これstruct
には一種のテンプレート構造があり、値を初期化して割り当てるための一種の体系的な手法があるため、その存在により私のロジックに適切な順序がもたらされます。
紛らわしい部分は何ですか?
ある観点から(安全性)、これらのテーブルの詳細が必要ですreadonly
DbTable.TableID
ですから、間違って上書きされることDbTable.TableName
はありません。
そうは言っても、SETできる場所は1つだけである必要があります...上記のようなアプリケーションの専用セクションsetTableReferences()
...そこに追加するかもしれません:
CustMeta.TableID = HT_tblIDs.tblCustomersID
CustMeta.TableName = HTDB_Tables.Customers;
一方、テーブルの情報にアクセスできるようにする必要があります。
たとえば、それらDataTables
をDataSet
DataSet ALLTablesSet = new DataSet();
// assuming the SQL actions already been taken in another method previosly...
// so DataTable is already retrived from DB
//...but only as a short usage example:
AllTablesSet.Tables.Add(new DataTable(CustMeta.TableName));
私の質問は、構造体を操作する正しい方法は何ですか...私のシナリオのように、
したがって、アプリの 1 つのセクションでは、初期化して値を非公開に割り当てます。
アプリの他のセクションから、その値を使用できます(読み取り専用)
そうすれば、アプリケーションは値を読み取ることによってのみ書き込み用の値にアクセスできなくなります。別の(Public ReadOnly)変数を使用する必要があると思います。
その変数は公開されることを意図していた...そしてその値は「害を受ける」ことはできませんでした