C# N层应用程序和SQL Server Compact 4.0

C# N层应用程序和SQL Server Compact 4.0,c#,.net,sql-server-ce,connection-string,n-tier-architecture,C#,.net,Sql Server Ce,Connection String,N Tier Architecture,我目前正在用C#开发一些应用程序,我正在使用n层体系结构和嵌入式数据库SQL Server Compact。SQLServerCompact对我来说是相当新的,我对这个数据库的连接字符串有一些问题。我的n层应用程序由DataTier、MiddleTier、PresentationTier组成。在解决方案中,每一层都是独立的项目 DataTier包含db文件db.sdf和EF 5.0文件,包括实体。模型是使用数据库优先的方法创建的 我曾想过可以将这个嵌入式数据库直接构建到dataTier.dll中

我目前正在用C#开发一些应用程序,我正在使用n层体系结构和嵌入式数据库SQL Server Compact。SQLServerCompact对我来说是相当新的,我对这个数据库的连接字符串有一些问题。我的n层应用程序由
DataTier
MiddleTier
PresentationTier
组成。在解决方案中,每一层都是独立的项目

DataTier
包含db文件
db.sdf
和EF 5.0文件,包括实体。模型是使用数据库优先的方法创建的

我曾想过可以将这个嵌入式数据库直接构建到
dataTier.dll中,并从其他层引用它,但我不想将连接字符串设置为绝对值,因此我目前使用的连接字符串形式如下:

Data Source = |DataDirectory|\db.sdf 
在每一层中,这是毫无意义的,因为它为每一层创建单独的数据库,但我无法找到如何在
dataTier
中相对于数据库创建连接字符串。这可能吗

你能给我指出正确的方向吗?解决这个问题的最佳方法是什么


谢谢

好的,您的数据层应该向更高的层公开一个通用接口,比如存储库或类似的东西,而不需要任何其他层知道正在使用什么数据库(因此它们也不需要连接字符串!)我在middleTier中有管理器与db一起工作,但当我想在单元测试中进行测试时,它会抛出异常“未定义连接字符串…”。。。。所以如果我理解正确,连接字符串应该只在dataTier中?