如何解决EF 4.1 DbContext生成器-将实体放置在不同的项目中吗?
| 作为应用程序体系结构的一部分,我们希望在功能层之间定义明确的界限。因此,典型的应用程序解决方案将包含: 实体 模型 任务 主持人 前端 这些最终是完全不同的程序集。 进行实体/模型划分是为了将数据库访问功能与POCO分开放置在一个单独的层中,这样,只有Task才需要了解模型,而Presenter之前的每个人都知道实体 在使用Code-First或Fluent-API时,此方法效果很好-但由于在这些范例中缺少对SPROC的支持,事实证明,在EF 4.1下,我必须使用EDMX模型。 所以-我正在使用DbContext Generator生成POCO,但是生成的类最终位于.Model下,尽管我可以将其命名空间强制为.Entity,但它们仍位于.Model程序集中,这意味着现在.Presenter必须参考.Model以获取应位于.Entity中的类。 有没有办法强迫或欺骗EF将其生成的输出转储到其他项目中?解决方法
当然。 DbContext Generator只是两个T4模板。您可以将模板生成实体移动到其他项目。您只需要修改模板以指向正确的EDMX文件即可。这是默认值:
string inputFile = @\"Model.edmx\";
您必须将其更改为EDMX文件的相对地址。它将类似于:
string inputFile = @\"../Model/Model.edmx\"
模板将为生成的实体自动使用当前项目的默认名称空间,但是您必须修改上下文的第二个模板以使用新的名称空间,以便从引用的程序集中正确解析实体类型。
在另一个项目中使用模板有一个小缺点-修改模型时它不会自动更新。您必须始终通过使用模板文件上上下文菜单中的“运行自定义工具”来手动触发实体重新创建。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。