Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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# 实体框架-仅限不带模板的edmx_C#_.net_Entity Framework 6 - Fatal编程技术网

C# 实体框架-仅限不带模板的edmx

C# 实体框架-仅限不带模板的edmx,c#,.net,entity-framework-6,C#,.net,Entity Framework 6,我们只想添加.EDMX文件,而不为上下文和实体添加相应的.tt文件。这有多种原因,但长话短说——我们希望能够拥有.EDMX,并且能够在需要时从DB刷新它 目前,如果我每次“从DB更新”时删除.tt文件,它将重新生成我们不需要的.tt文件和实体。我不确定我是否完全理解,但我只是删除了模型中包含的一对t4/tt文件和以前生成的类文件。他们不会回来参加EF6 然后我删除它们并从数据库中更新模型: 他们不会回来了: 这来自EF 6.2: 您确定没有处理某些源代码管理问题吗?您可以试试这个 删除.

我们只想添加.EDMX文件,而不为上下文和实体添加相应的.tt文件。这有多种原因,但长话短说——我们希望能够拥有.EDMX,并且能够在需要时从DB刷新它


目前,如果我每次“从DB更新”时删除.tt文件,它将重新生成我们不需要的.tt文件和实体。

我不确定我是否完全理解,但我只是删除了模型中包含的一对t4/tt文件和以前生成的类文件。他们不会回来参加EF6

然后我删除它们并从数据库中更新模型:

他们不会回来了:

这来自EF 6.2:

您确定没有处理某些源代码管理问题吗?

您可以试试这个

  • 删除
    .tt
    文件下的
    .edmx
    文件
  • 项目->添加->新项目->
    EF 6.x DbContext生成器
  • 它将生成新的
    .tt
    文件。在这些
    .tt
    文件中,您可以指定
    .edmx
    文件路径。

  • 运行这些
    .tt
    文件以生成
    Model1

  • 禁用
    .tt
    文件(不要删除内容,因为如果以后要更新实体,则需要删除内容。通常在保存实体时,它们会生成新文件)

  • 更新您的
    .edmx
    (添加/删除表格)

  • 这将不会在edmx下生成新的
    .tt
    文件
  • 并且它不会更新您的实体类
  • 如果要更新实体类,请运行
    .tt
    文件

  • 我尝试了这个,但“从数据库更新模型”并没有生成新的.tt文件。因此,希望您的问题能够得到解决。

    如果只有
    .edmx
    和两个空
    .tt
    文件就足够了,您可以这样做:

  • 添加实体数据模型(数据库中的EF设计器)
  • 取消工具的初始执行
  • 在每个
    .tt
    文件和
    .edmx
    文件上清空
    自定义工具的
  • 如果需要,请删除
    .tt
    文件的内容
  • 删除
    .diagram
    文件
  • 完成此步骤后,您可以更新
    .edmx
    文件,但不会发生任何事情



    您是否尝试保留.tt文件但删除其内容?是的。这将是“有点”正常,但代码变得有些“脏”,每个EDMX ModelA.context.tt、ModelA.context.cs、ModelA.tt、ModelA.cs下都有额外的空文件。只是好奇:拥有一个EDMX,但没有T4模板,因此没有上下文和实体,其目的是什么?如果是数据库可视化,难道没有更好的工具吗?为什么不简单地创建一个新的可视化项目呢?说来话长,但T4s基本上不能满足我们的需要。我们需要为不同目的生成多个文件。因此,我们将有上下文和实体,但将在我们自己的代码(基于EDMX)中处理生成,而不使用T4s。我想我们可以让T4s正常工作,但由于我们工作的复杂性,使用我们自己的生成器似乎更易于维护。我不太确定,但您不能让自己的生成器成为edmx的自定义工具(它是edmx的一个属性)吗,我并没有这样做。我们没有Model1.Designer.cs,也没有Model1.edmx.diagram。当我们“从数据库更新模型”时,它们会回来。它是EF6.2使用6.2,designer.cs文件也将被创建,但它只是得到了一条注释:
    T4代码生成已为模型“C:\source\repos\ConsoleApp2\Data\Model1.edmx”启用……
    尝试添加一个新模型,重复我的步骤,看看……刚刚做到了,它正在恢复tts。我不认为这是源代码管理,因为我可以修改tts,然后在保存后删除它们,然后使用新的未修改tts进行恢复。另外,当我进行建模时,我选择了不在.config中保存连接字符串,而在“update”@katit上执行同样的操作,实际上不可能重新生成.tt文件。Visual Studio中没有机制来重新创建与模型直接关联的.tt文件。在EF5中尝试了这一点,甚至从T4更改了
    代码生成策略
    ,只是创建了db Context不确定什么是不可能的。根据其他海报和其他答案,人们看到了同样的行为。如果删除.tt文件并只保留.edmx-每次“更新”-VS/EF工具将重新创建这两个.tt文件。看起来这是迄今为止最好的答案。您还可以删除.context.tt,它将“遵守”它。因此,仅Model1.tt需要有趣的部分是,如果在执行此步骤后禁用“保存时转换相关文本模板”,则可以删除所有
    .tt
    文件。。。你也能复制这个吗?@katit似乎只要从
    .edmx
    文件中删除
    自定义工具就足够了。如果我删除Model1.tt,它将在“更新”时重新创建这两个.tt文件。是的,我有“Transform..”disabledIt将是一种解决方法,但是我们有多个.edmx文件,每个文件都有单独的模板,这将是一种混乱。我们的工作区中有这个解决方案。通常我们在一个项目中有所有edmx(比如说数据层),在另一个项目中有所有实体(实体)。这将实现分离并允许灵活性。此外,我们还修改了
    .tt
    以生成一些自定义代码(如类的接口)。@katit但使用此解决方案,tt文件现在将生成任何.cs文件,因此您的问题将得到解决。事实上,我认为自动生成.tt文件是相当困难的。好的是你不删除任何东西。您只需将它们分开,并随时更新每个组件。