努力实现基本任务的解决方案:
与多个Sql Data table
作为来源的网站应用程序一起工作......
这就是让我再次来到这里的原因......寻求经验丰富的 C# .net
开发人员帮助。
我只是想为正确的实现添加一些基本逻辑,比如使用
一个专用的命名空间和类,为 All 保存参考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
当前项目的每个表还有另一个帮助程序类
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();
}
这就是混乱开始的地方:
在日常使用中,我想尝试在网站应用程序中实现它:
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
不会被错误地覆盖。
话虽如此,应该只有一个地方可以设置......应用程序的一个专用部分,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));
我的问题是使用结构的正确方法是什么......就像在我的场景中一样,
因此,在应用程序的一个部分:您将初始化 - 私下为其分配一个值。
并且从应用程序的其他部分,您可以使用它的值(仅适用于读数)
这样,应用程序将无法访问它的写入值,只能通过读取值,我认为它应该通过另一个(公共只读)变量。
所以这个变量本来是要暴露的......它的价值不能被“伤害”