我开始使用Entity Framework 6.0.1版本。我想将生成的DbContext和POCO模板类与模型中的不同类库分开。我花了几个小时解决问题但没有成功。
如果我创建一个新的类库,添加EF 6 EntityObject Generator并填充以下模板变量:
SourceCsdlPath = @"..\..\DataAccess\Model.edmx"
,
构建后在错误列表中收到以下错误:
错误2运行转换:System.IO.FileNotFoundException: 无法找到文件文件名: 'C:\源\ EFsource \ POCO .... \数据访问\ SZOSZRDBModel.edmx'
服务器堆栈跟踪:at Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolvePath(字符串 路径) System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr的 md,Object [] args,Object server,Object []& outArgs)at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(即时聊天 MSG)
在[0]处重新抛出异常:at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天 reqMsg,IMessage retMsg)at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培; msgData,Int32类型)at Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost.ResolvePath(字符串 路径) Microsoft.VisualStudio.TextTemplating31479401930D2C4820ACF71C66B5389A24A5053726798D9718DB676B3FFA30A3454B3CB1EDE2E1C267D5278B1528860C072E81A0E4647BC23993669604048FCD.GeneratedTextTransformation.ApplyUserSettings(UserSettings userSettings)at Microsoft.VisualStudio.TextTemplating31479401930D2C4820ACF71C66B5389A24A5053726798D9718DB676B3FFA30A3454B3CB1EDE2E1C267D5278B1528860C072E81A0E4647BC23993669604048FCD.GeneratedTextTransformation.TransformText()
错误消息很明确,但我不知道,如何在没有完整绝对路径的情况下设置模型路径。
我不确定,使用最新版本的实体框架是最好的想法......
答案 0 :(得分:35)
不需要绝对路径。看起来你的相对路径不正确。我正在使用EF6.1,我在一个单独的项目中有POCO类。这就是我在VS 2013中使用它的方法。
ADO.NET Entity Data Model
。该项目将包含DB Context
。EF6.x DbContext Generator
项目添加了新的DBContext
项。POCO
个对象。[Project Name]Model.tt
项目从DbContext
项目移至POCO
项目。[Project Name]Model.tt
文件。在第5行,我改变了:const string inputFile = @"SampleModel.edmx";
const string inputFile = @"..\DbContext\SampleModel.edmx";
DbContext
项目中添加了对POCO
项目的引用。如果您使用的是VS 2013,则可以调试模板以查看相对路径的解析方式。
.tt
文件中添加断点。.tt
文件,然后选择“调试T4模板”。