Entity Framework 4.0 使用与数据库字段名称不同的属性名称映射 POCOS
我是 ADO.Net 实体框架 4 的新手。我有一组 pocos,需要将其映射到旧数据库。问题是 db 字段名称与 poco 属性名称不同。例如。数据库字段名称 = 'cusID' 和 poco 属性 = 'CustomerID'。 绘制这些地图的最佳方法是什么?
I'm a newbie to ADO.Net Entity framework 4. I have a set of pocos which I need to map to a legacy database. The problem is that the db field names are different to the poco property names. eg. db field name = 'cusID' and poco property = 'CustomerID'.
What is the best way to map these?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这正是 EF 映射旨在解决的问题。
您的 POCO 类需要匹配您的“概念模型”...而不是您的“数据模型”。
如果在 EF 中从数据库构建模型,则只需重命名实体属性。这样做会更改概念模型 - 以匹配您的 POCO 类 - 但保持存储模型不变,并设置适当的映射。
This is exactly the problem EF mapping is designed to solve.
Your POCO class need to match your 'conceptual model'... Not your 'data model'.
If in EF you build your model from the database you simply need to rename your entity properties. Doing this changes the conceptual model - to match your POCO classes - but leaves the storage model unchanged, and sets up the appropriate mappings.
Entity Framework CTP4 有一个名为 Code First 的新功能,允许您将 POCO 属性成员映射到数据库表列名称。这篇博客文章可能就是您正在寻找的内容,
http://theminimalistdeveloper.com/2010/07/28/how-to-map-pocos-to-existing -databases-in-entity-framework-4-0-code-first-and-asp-net-mvc-2/
此外,EF CTP 5(将在未来几周内发布)具有更好的性能API 可流畅地配置您自己的约定,以将 POCO 域类映射到现有数据库结构。
希望这有帮助。
更新 这是讨论如何在 EF4 CTP5 中实现此目的的新文章
Entity Framework CTP4 has a new feature called Code First that allows you to map POCO property members to database table column names. This blog article may be what you are looking for,
http://theminimalistdeveloper.com/2010/07/28/how-to-map-pocos-to-existing-databases-in-entity-framework-4-0-code-first-and-asp-net-mvc-2/
Additionally, EF CTP 5 - which will be released in the next few weeks - has a better API to fluently configure your own conventions to map your POCO domain classes to existing database structures.
Hope this helps.
Update Here is the new article that discusses how to achieve this in EF4 CTP5