我有两个项目:
我希望Class library
定义类,创建edmx文件并拥有部分连接字符串,例如:
<add name="BlogEntities" connectionString="metadata=res://*/Blog.csdl|res://*/Blog.ssdl|res://*/Blog.msl;provider=System.Data.SqlClient;provider connection string='{0}'" providerName="System.Data.EntityClient" />
我希望我的类库定义csdl
,ssdl
和msl
文件。我的控制台应用程序不关心元数据,它只会定义database
,user
和password
。
如何将连接字符串拆分为两个?
答案 0 :(得分:0)
从我的记忆中,如果你在类lib中创建模型,VS将在lib项目中创建一个app.config。
只需在控制台库的app.config中合并此文件的内容即可。
在这种情况下,您可以在lib的app.config文件中使用“design”配置,在控制台应用程序的app.config中使用运行时配置。
答案 1 :(得分:0)
在库中创建一个类(例如Connector
),它允许您提供所需的任何连接值(数据库,用户,密码)。然后在控制台应用程序中使用此类,并提供您认为合适的必要值。
答案 2 :(得分:0)
我发现我可以为所有具有相同名称的实体命名,例如Entities
。我的app.config
需要在控制台应用程序上,但我可以使用一个ConnectionString
。
<add name="Entities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLExpress;Initial Catalog=Test;Persist Security Info=True;User ID=test;Password=test;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
元数据可以设置为res://*/
,并且可以全局运行。 From MSDN:
模型和映射元数据 实体框架被加载到 MetadataWorkspace。这个元数据是 全局缓存,可用于 其中的ObjectContext实例 相同的应用领域。
我还可以强制任何可插入模块使用ConnectionString
传递上下文构造函数:
new Blogs.Data.Entities("name=Entities");