2011-03-14 59 views
1

这是您的想法类型问题的一分钱。LazyLoad和ConnectionString

我们从头开始编写我们所有的类。对于我们的业务实例,connectionstring是构造函数的一部分。这很简单,因为它通常是唯一的构造函数参数。当我们从数据库加载记录并将其存储在实体对象中时......我们应该如何记住连接字​​符串?这是为了延迟加载的目的。因为我们可能更多地谈论同一个基础数据库类型的一个数据库实例。我们需要知道我们从哪里获得记录,并知道从哪里延迟相关对象。

我知道这听起来像一个简单的问题。我们正在努力避免编码。

我们是否将每个构造函数中的连接字符串设置为字符串以尝试强制设置它?我们是否存储对加载实体的业务对象的引用?同时,也认为在某些情况下从xml反序列化时我们需要有一个空构造函数。

没有经历过这个,但有工厂的想法。获得一个新的实体对象必须通过一个连接字符串必须被证明的工厂。

这不是一个明确的API,只是团队实施和采用的一些东西。

一些链接/代码示例也会很棒。谢谢

回答

1

这个实体框架?你在使用POCO吗?你能利用EF内置的延迟加载功能吗?

对于什么是值得我们还可以知道数据库它连接到与上下文:

EntityConnection connection = myContext.Connection as EntityConnection; 

if (connection != null) 
    string db = connection.StoreConnection.Database; 

也就是说可能不是有益的,但。

+0

谢谢,我们从头开始编写我们所有的实体。没有使用框架。 – 2011-03-14 23:04:09

+0

啊,在这种情况下,也许看看其他ORM如何做? EF具有延迟加载功能,因此它们生成的实体代理知道它们连接到哪个DB。也许看看他们是如何做到的(或者任何其他ORM做的)都可以提供线索。 – 2011-03-14 23:08:36

+0

感谢您试图引导我们走向正确的方向。我们决定在所有构造函数中包含连接字符串,并在XmlIgnore中将其作为基类的属性。另外,在反序列化时设置CS。它现在看起来很乱,但是会随着我们的去重构。 – 2011-03-15 22:33:40