C# 从实体框架6模型中分离POCO对象类和DBContext
我开始使用EntityFramework6.0.1版本。我想将生成的DbContext和POCO模板类从模型中分离到不同的类库中。我花了几个小时解决了这个问题,但没有成功 如果创建新类库,请添加EF 6 EntityObject Generator并填充以下模板变量:C# 从实体框架6模型中分离POCO对象类和DBContext,c#,.net,entity-framework-6,C#,.net,Entity Framework 6,我开始使用EntityFramework6.0.1版本。我想将生成的DbContext和POCO模板类从模型中分离到不同的类库中。我花了几个小时解决了这个问题,但没有成功 如果创建新类库,请添加EF 6 EntityObject Generator并填充以下模板变量: SourceCsdlPath=@.\..\DataAccess\Model.edmx” 生成后,在错误列表中获取以下错误: 运行转换时出现错误2:System.IO.FileNotFoundException: 找不到文件名: '
SourceCsdlPath=@.\..\DataAccess\Model.edmx”
生成后,在错误列表中获取以下错误:
运行转换时出现错误2:System.IO.FileNotFoundException:
找不到文件名:
'C:\Source\EFsource\POCO….\DataAccess\SZOSZRDBModel.edmx'
服务器堆栈跟踪:在
Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolvePath(字符串
路径)在
System.Runtime.Remoting.Messaging.StackBuilderSink.\u PrivateProcessMessage(IntPtr
md,对象[]args,对象服务器,对象[]和outArgs)位于
System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage
味精)
在[0]处重试异常:在
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage
reqMsg,IMessage retMsg)在
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
msgData,Int32类型)at
Microsoft.VisualStudio.TextTemplating.ItextTemplatingGenEngineHost.ResolvePath(字符串
路径)在
Microsoft.VisualStudio.TextTemplating31479401930D2C4820ACF716B5389A24A5053726798D9718DB676B3FFA3454B3CB1EDE2E1C2267D5278B1528860C072E81A0E4647BC2393669604048FCD.生成的文本转换。应用程序设置(用户设置
用户设置)位于
Microsoft.VisualStudio.text模板31479401930D2C4820ACF716B5389A24A5053726798D9718DB676B3FFA3454B3CB1EDE2E1C2267D5278B1528860C072E81A0E4647BC2393669604048FCD.GeneratedTextTransformation.TransformText()
错误信息很清楚,但我不知道如何在没有完全绝对路径的情况下设置模型路径
我不确定,使用最新版本的实体框架是最好的主意…不需要绝对路径。看起来您的相对路径不正确。我正在使用EF6.1,我在一个单独的项目中有POCO类。这就是我如何在VS 2013中实现它的
ADO.NET实体数据模型
。此项目将包含DB上下文
DbContext
项目中添加了一个新的EF6.x DbContext生成器
项POCO
对象[Project Name]Model.tt
文件从DbContext
项目移动到POCO
项目[Project Name]Model.tt
文件。在第5行,我更改了:conststringinputfile=@“SampleModel.edmx”代码>
收件人:
const string inputFile=@.\DbContext\SampleModel.edmx”代码>
DbContext
项目中的引用添加到POCO
项目中.tt
文件中添加断点.tt
文件,然后选择“调试T4模板”你想要
@“\..\..\DataAccess\Model.edmx”
?我不明白你的问题。我想设置项目的另一个文件夹,但我无法在目录树中向上导航。谢谢你的帮助,伙计!这对我有用。祝你过得愉快!:)@弗雷米斯,你的POCO有没有像EF4那样的基本类型?在DB-First方法中,生成的POCO都标记为partial,但看起来它们根本不是从任何东西派生的。。。分部关键字允许我将类的定义扩展到多个文件中。当我需要重新生成DTO时,T4模板将覆盖代码生成的文件,但我的“手动编辑”文件不受影响。我编辑T4模板以生成具有以下命名约定的文件:[类名].base.cs。然后创建名为[class name].cs的类。未生成的文件将使用接口扩展“基本”生成的文件。如果您感兴趣,我可以提供一个具体的示例。我认为您还需要更改*.tt文件属性中的自定义工具名称空间,以与包含edmx文件的项目中的默认名称空间相对应。DbContext
项目需要引用POCO
项目,但是,如果POCO
项目想要做任何有用的事情,它必须引用DbContext
项目,这将导致循环依赖,这是不允许的。我猜您的` POCO项目只是应用程序项目中的另一个子项目。