为了账号安全,请及时绑定邮箱和手机立即绑定

没有 App.config 的实体框架,数据库优先,存储库模式,N 层解决方案架构

没有 App.config 的实体框架,数据库优先,存储库模式,N 层解决方案架构

C#
白猪掌柜的 2021-11-14 10:49:05
好吧,现在我放弃了。我的挑战是使用实体框架 6、存储库模式和 N 层解决方案架构构建通用 DAL。概要:使用这种方法https://blog.magnusmontin.net/2013/05/30/generic-dal-using-entity-framework,我创建了我的 DAL 和 BLL。一切顺利,Unittests 顺利完成。好的。挑战:然后我创建了一个表示层,其中包括一个Excel 插件。但是由于每个客户端使用的数据库可能不同,因此需要从客户端更改数据库ConnectionString。好的,将 app-config 添加到 Excel-template 项目...不起作用。无论我做什么,我都无法从数据库中取回数据。现在我需要消除对 app.config 的需求,而只是在初始化 BL 时从客户端提供 ConnectionString。我尝试了Entity Framework - Database First without config 和How can I use Entity Framework without App.config 的建议,但我似乎无法让它很好地适应我的挑战。我确实使用了其中提到的一些解决方案,但是由于我的 DAL 使用的是存储库模式,因此我无法完全了解如何实施提到的解决方案......我所做的:我在 DataAccessLayer 中添加了一个 DbConfiguration 类,它实现了多个构造函数。(我无法弄清楚如何命中其他构造函数 - 只有参数构造函数,但这是另一个问题的问题)。我的 ythis classe 构造函数如下所示:private DefaultConfiguration(){    SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder()    {        DataSource = database,        InitialCatalog = initialCatalog,        UserID = userId,        Password = password,        IntegratedSecurity = useTrustedConnection    };    // Initialize the EntityConnectionStringBuilder.    EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder()    {        Provider = providerName,        // Set the provider-specific connection string.        ProviderConnectionString = sqlBuilder.ToString(),        // Set the Metadata location.        Metadata = @"res://*/CommonModel.csdl|res://*/CommonModel.ssdl|res://*/CommonModel.msl"    };    SetExecutionStrategy("System.Data.SqlClient", () => new DefaultExecutionStrategy(), database);      }但是,这只会带来可怕的 UnIntentionalCodeFirstException,我现在被卡住了。题:如何从我的 PL 一直到 DAL 获取 ConnectionString?我会尝试创建一个非无参数的 Repository-constructor,它会接受一个 SQL-sonnectionstring 作为参数,但是如何呢?我知道这是一个很大的问题,但我已经尝试在不引起 SystemOutOfMemoryException 的情况下提供尽可能多的信息,并试图将我的问题归结为一个问题——稍后会出现更多问题,但现在这必须足够了……希望各位神童能给我指点一二……
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

好吧,我从来没有让它像我想要的那样工作,所以我改变了我的 DomainModel 不使用 EDMX 文件 - 这是我得到的最终错误的全部原因......

Så 基本上我已经将 EF 建模从 Database First 更改为 Code-First ....

我还将 EntityFramework 包添加到我的 Excel-Addin 项目中。


查看完整回答
反对 回复 2021-11-14
  • 1 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信