Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跨项目共享实体框架接口_C#_Entity Framework_Tdd_Solid Principles - Fatal编程技术网

C# 跨项目共享实体框架接口

C# 跨项目共享实体框架接口,c#,entity-framework,tdd,solid-principles,C#,Entity Framework,Tdd,Solid Principles,如何跨项目共享实体框架MyEntitiesDbContext接口? 我希望遵循S.O.L.I.D原则,并将其用于测试其他项目 主要问题是与接口共享模型实体,并且没有循环引用。您可以通过使用t4模板生成fakes类来实现这一目标。您可以生成 数据库上下文的公共接口 主要解决方案的标准实现,实现公共接口 用于测试的Fake,实现公共接口 要了解t4模板,您可以阅读。我希望这篇文章能对你有所帮助。祝你好运 如何共享实体框架MyEntitiesDbContext接口 项目?我想遵循S.O.L.I.D

如何跨项目共享实体框架MyEntitiesDbContext接口? 我希望遵循S.O.L.I.D原则,并将其用于测试其他项目


主要问题是与接口共享模型实体,并且没有循环引用。

您可以通过使用t4模板生成fakes类来实现这一目标。您可以生成

  • 数据库上下文的公共接口
  • 主要解决方案的标准实现,实现公共接口
  • 用于测试的Fake,实现公共接口
要了解t4模板,您可以阅读。我希望这篇文章能对你有所帮助。祝你好运

如何共享实体框架MyEntitiesDbContext接口 项目?我想遵循S.O.L.I.D原则,并将其用于 测试其他项目

要实现这一点,您需要生成EF生成的类来实现接口,然后使用mock(可能是Rhino mock)来测试代码

主要问题是使用接口共享模型实体,而不使用 循环引用

为了避免循环引用,您需要将接口生成并包含在一个单独的程序集中,该程序集中不引用EF程序集

尽管EF现在是6.0版,但当人们尝试使用EF时,这些只是其中的两个困难

幸运的是,您可以从下载T4文件


它们有助于回答上述问题。

感谢您的回答。我一开始就喜欢这样,可能没有使用t4,但我不知道如何处理实体框架对象。我有参考回路错误。实体是不共享的。呵呵,有趣的故事就在你们发帖的前两天,我写了几乎完全相同的模板,也是基于实体框架t4源代码。无论如何,谢谢你的链接。大的想法往往会发生冲突。好消息是我们都能为未来的项目节省工作时间。