gpt4 book ai didi

c# - 将 POCO 对象类和 DBContext 从 Entity Framework 6 模型中分离出来

转载 作者:IT王子 更新时间:2023-10-29 04:53:43 33 4
gpt4 key购买 nike

我开始使用 Entity Framework 6.0.1 版本。我想将生成的 DbContext 和 POCO 模板类分离到与模型不同的类库中。我花了几个小时解决了这个问题,但没有成功。

如果我创建一个新的类库,请添加 EF 6 EntityObject Generator 并填写以下模板变量:

SourceCsdlPath = @"..\..\DataAccess\Model.edmx",

构建后在错误列表中得到如下错误:

Error 2 Running transformation: System.IO.FileNotFoundException: Unable to locate file File name: 'C:\Source\EFsource\POCO....\DataAccess\SZOSZRDBModel.edmx'

Server stack trace: at Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolvePath(String path) at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost.ResolvePath(String path) at Microsoft.VisualStudio.TextTemplating31479401930D2C4820ACF71C66B5389A24A5053726798D9718DB676B3FFA30A3454B3CB1EDE2E1C267D5278B1528860C072E81A0E4647BC23993669604048FCD.GeneratedTextTransformation.ApplyUserSettings(UserSettings userSettings) at Microsoft.VisualStudio.TextTemplating31479401930D2C4820ACF71C66B5389A24A5053726798D9718DB676B3FFA30A3454B3CB1EDE2E1C267D5278B1528860C072E81A0E4647BC23993669604048FCD.GeneratedTextTransformation.TransformText()

错误信息很清楚,但我不知道如何在没有完整绝对路径的情况下设置模型路径。

我不确定,使用最新版本的 Entity Framework 是最好的主意......

最佳答案

不需要绝对路径。看起来你的相对路径不正确。我使用的是 EF6.1,并且在单独的项目中有 POCO 类。这就是我让它在 VS 2013 中工作的方式。

  1. 创建了一个类库项目并添加了一个 ADO.NET 实体数据模型。该项目将包含 DB 上下文
  2. DBContext 项目添加了一个新的 EF6.x DbContext Generator 项。
  3. 创建了一个新的类库项目。该项目将包含 POCO 对象。
  4. [项目名称]Model.tt 文件从 DbContext 项目移动到 POCO 项目。
  5. 编辑了[项目名称]Model.tt 文件。在第 5 行,我更改了:
    const string inputFile = @"SampleModel.edmx";
    至:
    const string inputFile = @"..\DbContext\SampleModel.edmx";
  6. DbContext 项目中的引用添加到 POCO 项目。

如果您使用的是 VS 2013,您可以调试模板以查看您的相对路径是如何被解析的。

  1. 将断点添加到您的 .tt 文件。
  2. 在解决方案资源管理器中右键单击 .tt 文件并选择“调试 T4 模板”。

关于c# - 将 POCO 对象类和 DBContext 从 Entity Framework 6 模型中分离出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20317913/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com