Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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 - Fatal编程技术网

C# 如何为实体框架模型第一代实体指定输出目录?

C# 如何为实体框架模型第一代实体指定输出目录?,c#,entity-framework,C#,Entity Framework,我们将实体框架6与模型优先一起使用,默认情况下,我们的实体、dbcontext、.tt文件和模型文件都被塞进一个文件夹中,没有任何结构 我想实现一些分离,至少是这样: 项目根/实体/从模型生成的实体 项目根目录/存储库/其他一切(.tt、.edmx等) 这可能吗 事实并非如此。EF负责将材料放置在何处,以及预期材料放置在何处;你不能改变这一点。为了更接近你想要的,你可以做的是使用数据库进行反向工程,并生成一组可以用作数据访问的POCO类 我相信这通常被描述为代码秒 您可以安装电动工具,然后在解决

我们将实体框架6与模型优先一起使用,默认情况下,我们的实体、dbcontext、.tt文件和模型文件都被塞进一个文件夹中,没有任何结构

我想实现一些分离,至少是这样:

项目根/实体/从模型生成的实体
项目根目录/存储库/其他一切(.tt、.edmx等)


这可能吗

事实并非如此。EF负责将材料放置在何处,以及预期材料放置在何处;你不能改变这一点。

为了更接近你想要的,你可以做的是使用数据库进行反向工程,并生成一组可以用作数据访问的POCO类

我相信这通常被描述为代码秒


您可以安装电动工具,然后在解决方案中选择类所在的位置,然后右键单击并选择“反向工程数据库”{sic}

当然可以!我不知道你说的是什么意思

Project root/Entities/entities generated from model
Project root/Repository/everything else (.tt, .edmx, etc...)

但您甚至可以分离组件。您可以在程序集或命名空间中拥有域实体、存储库和上下文类(为了使应用程序可维护,最好这样做)。看看你的博客和文章。希望能有所帮助

我先问模特。您链接的是代码优先。请在人们开始否决之前删除你的答案。(如果是您投了反对票,请在rcl的回答中取消simon的反对票)我认为最好先将您的问题编辑为数据,代码优先是实体框架工作中的一个习惯用法,实际上,您在首先使用代码时创建了模型!对不起,我以为你说的模型优先是同一个意思,“模型优先”是微软的一个官方表达,从EF4.0开始就存在了,当时“代码优先”根本不存在。我的问题甚至提到了.edmx文件,这清楚地表明它不是先编写代码的。你是对的,我没有注意到这一点,但在你的问题中提到了“数据优先”。数据(数据库)优先和模型优先也不一样。数据库优先-您首先拥有数据库,并根据该数据库生成模型。先建模-你先做一个模型,然后根据这个模型生成数据库和代码。我不知道到底是谁投了这个票。根据我所有的研究,这是正确的答案。我再等几个小时,然后接受它并投票表决。谢谢你,科内尔。干杯-结果是代码优先EF模型。这对我的处境不好,但对这个好主意投了赞成票。谢谢,只是出于兴趣,有了所有EDMX的复杂性,你真正需要的是什么?POCO方法更适合合作。老实说,我不确定。我会对这个主题做更多的研究,如果我发现你的解决方案更好,那么我会建议我的团队成员改变我们使用EF的方式(无论如何,我们正在进行一次大的重构)。从EF之前的LinqToSql几天起,我发现
.dbml
.edmx
文件更多的是痛苦而不是快乐。体重过重,不利于在设计师之外进行编辑。然而,拥有一组本质上或多或少简单的POCO类只会使整个过程变得“更薄”,开发人员也更熟悉。将它与迁移和迁移脚本输出(而不是从PackageManager控制台自动运行)结合起来,您就有了一个强大而简单的方法。