我有一个大约有160张桌子的数据库(这很震撼!我认为它有大约50张......) 我们使用没有DAL的代码库,我们想开始使用MS Entity Framework(这是.net DAL中最新,最热门的东西,对吗?)所以我们可以使用Linq和其他最先进的3年-ago stuff。
我尝试自动生成整个数据库模型,但似乎是使用和修改的噩梦。例如,它有一些表没有自动链接(可能在某些方面缺少数据库模型)。
然后我尝试分别生成数据库的每个“区域”,但有两点困扰我。
首先,需要每个模型的不同连接字符串。 WTF。此外,我们拥有不同数据库的客户,并且在30个客户端维护10个连接字符串将是一场噩梦。
其次,它似乎无法链接到其他模型中的类。也许我只是没找到它?大约10-15个“模块”,大部分都联系在一起,它将失去统一DAL的目的之一。例如,我们有一个“文件”表,链接到联系人,技术支持,产品,网络等。我们仍然可以使用ID,但它有点难过。
那么,你会做什么?一个非常复杂的创建和维护模型;或者一些较小的,更容易更新,但在日常使用中有点复杂?你用了什么,有什么好处和缺点?
答案 0 :(得分:2)
首先,关于连接字符串,是的,每个模型都需要自己的连接字符串,因为它是 EntityConnection ,它不仅包含有关如何连接数据库的信息,还包含有关如何连接数据的信息在运行时找到模型的3部分(即 SSDL , CSDL 和 MSL )。因此,当使用一个数据库时,即使数据库连接字符串部分也是相同的,但 Metadata 部分对于每个模型都是不同的,这就是为什么你需要它们全部存在的原因。
其次,你做对了,拥有一个包含所有实体的大型EDM并不是一个好习惯,不推荐。 This post 包含有关原因的详细讨论以及有关如何将数据库表分成不同模型的一些指导原则。