【问题标题】:table mapping in entity framework实体框架中的表映射
【发布时间】:2011-08-03 23:40:59
【问题描述】:

我有一个 Model1.edmx,它有几个表。现在,我不想要表 TableA 的所有列,所以我创建了另一个实体并使用表映射将其映射到 TableA。

我在做同样的事情时面临很多问题。我得到的错误是,

" Thier primary key may collide".

如果我创建 FK 关联,它会显示 "Non-Primary-Key column(s) [XXX] are being mapped in both fragments to different conceptual side properties".

我不确定我采用的方法是否正确,因为 TableA 已经存在实体集。

如果这是方法,那么解决方案是什么。

如果不是,我应该走哪条路。

更新:我确实删除了不需要的属性,此外,我添加了 TableA 中其他 FK 表中的属性。

现在我收到错误 " Problem in mapping fragments starting at line 566:Must specify mapping for all key properties (TableAs.ID) of the EntitySet TableAs."

更新我添加了其他表属性,因为它们是 FK,并且我希望 UI 中其他表的列数很少。这是一个好的(或可能的)方法吗?或者我应该为它创建类,然后手动映射类的每个属性? 提前致谢。

【问题讨论】:

    标签: .net entity-framework


    【解决方案1】:

    你的意思是:

    现在,我不想要表 TableA 的所有列,所以我创建了另一个实体并使用表映射将其映射到 TableA。

    不完全清楚。您的意思是您只想处理TableA 中的一部分列而忽略应用程序中各处的其他列吗?假设它们可以为空(或具有ComputedStoreGeneratedProperty),您只需在TableA 的实体中单击它们并删除它们。

    您不能创建另一个映射到 TableA 的实体,除非您正在处理按层次结构的表继承,听起来您对此并不感兴趣。

    【讨论】:

    • 我不想要用于数据库或开发目的的内部列。我只想公开对 UI(或用户)有用的列。另外,我不确定“每个层次结构的表功能”,您能否详细说明一下……或者可能只是在谷歌上搜索会有所帮助?
    • @Priya:您所说的与表继承无关,所以如果您有兴趣了解它是什么,请查看它;它不会帮助你解决这个问题。就像我上面说的,如果列可以为空,那么您可以简单地从设计器中删除列属性。如果它们不可为空,则无法删除它们,因为无法保存实体。
    • 好的,我应该从实体或实体集中删除它吗?它不会影响任何crud操作??另外,有没有办法重命名实体中的列?
    • 另外,我如何处理实体中的FK,我应该为它创建POCO,我的意思是我想知道最好的方法!
    • 我不确定我是否理解您的问题;唯一可以删除属性的地方是实体,因为实体集没有属性。至于 CRUD 操作,如果删除字段,则 update 和 insert 语句将不包括这些列。如果您还有其他问题,请更新您的问题或发布新问题。
    猜你喜欢
    • 2014-04-01
    • 2010-10-09
    • 2016-02-21
    • 1970-01-01
    • 2011-12-18
    • 2013-01-17
    • 2015-08-17
    • 2017-02-11
    • 2011-03-09
    相关资源
    最近更新 更多