背景是要操作关系数据库中的表,表A与表B是一对多关系;
为了实现OO Style,设计两个类A与B相对应;但如何表现两者的一对多关系?
---------------------------------------------------
public class B //表B中Aid、Bid联合主键
{
private int _Aid;
private int _Bid;
public B{}
...
}
public class A
{
private int _Aid;
//private ArrayList _B; ???用集合实现?
public A{}
...
}
---------------------------------------------------
这样写行吗?应该如何实现并进行各种写、读数据库的操作?初学OO,最好有详细代码教我,感谢!
楼主写的对,用数组表示对象集合
又来晚了
可以啊!把B表中的每一个字段对应B类中的一个属性,A也一样.
把B的对象放到ArrayList中
操作是在遍历ArrayList,从ArrayList读出来再转换为B,然后从属性中拿到数据再更新
this[]
帮你顶一下,thinkingforever的方法是对的.
A.cs
==============
using System;
using System.Collections;
namespace Gardener
{
public class A
{
private ArrayList _objB=new ArrayList();
public ArrayList objB
{
get{return _objB;}
}
public A()
{
}
public void addB(B obj)
{
this.objB.Add(obj);
}
}
}
B.cs===================
using System;
namespace Gardener
{
/// <summary>
/// Summary description for B.
/// </summary>
public class B
{
private string _title;
public string title
{
set{_title=value;}
get{return _title;}
}
public B()
{
//
// TODO: Add constructor logic here
//
}
}
}
============
.......
private void button1_Click(object sender, System.EventArgs e)
{
A clsA=new A();
B clsB=new B();
clsB.title="abc";
clsA.addB(clsB);
clsB=new B();
clsB.title="efg";
clsA.addB(clsB);
for(int i=0;i<clsA.objB.Count;i++)
{
MessageBox.Show(((B)(clsA.objB[i])).title);
}
}
.....
楼上详细啊
实际在可以使A类直接继承ArrayList这个类
这样A类中就有了Items的属性
class A:ArrayList{
}
也可以考虑考虑用HashTable阿,可以把B的主键作为HashTable的key
如果需要遍历相关的操作,可以考虑迭代子模式