关于ObjectSpace的Delay Loading

Delay Loading在现阶段的ObjectSpace并不是太好,很不稳定。而且Mapping工具不支持设置Delay Loading。
我的解决办法是构建一个泛型的集合类,然后在前一个关系对象添加个为这个类型的属性,在get访问器中构建类的实例,然后返回。

集合类代码:

public class MyObjects<Objectype> : CollectionBase
{

private ObjectSet<Objectype> obs;
private System.Data.ObjectSpaces.ObjectSpace os;
private SqlConnection con = new SqlConnection("Server=localhost;DataBase=northwind;UID=sa;PWD=;");


/// <summary>
/// 根据ID建立一个对象集合
/// </summary>
/// <param name="QueryString">查询字串(大小写敏感)</param>
/// <param name="ObjName">希望构建的对象类型名称</param>

public MyObjects(string QueryString)
{

try
{
os = new ObjectSpace("data.msd", con);

obs = os.GetObjectSet<Objectype>(QueryString);
foreach (Objectype obj in obs)
{
Add(obj);
}
}
catch (Exception ex)
{
throw new Exception("构造对象集合错误,原因:数据库错误或者没有需要的对象\n" + ex.ToString());
}

}
}

属性访问器的代码片断:

private MyObjects<Orders> myVar;

public MyObjects<Orders> orders
{
get
{
MyObjects<Orders> or = new MyObjects<Orders>("customerID='" + this.iD + "'");
return or;

}
set { myVar = value; }
}

原文地址:https://www.cnblogs.com/format/p/5864.html