Entity Framework 4.1 Code First - 如何将包含实体 ID(外键)的 csv 的字符串映射到相应的实体

Posted

技术标签:

【中文标题】Entity Framework 4.1 Code First - 如何将包含实体 ID(外键)的 csv 的字符串映射到相应的实体【英文标题】:Entity Framework 4.1 Code First - How to map a string containing csv of Entity ID's (foreign keys) to the corresponding Entity 【发布时间】:2011-05-05 16:32:31 【问题描述】:

在我提交问题之前,请注意我正在使用第三方供应商拥有的现有数据库,因此很遗憾,更改数据库格式不是一种选择。

这是问题所在:我有一个实体映射到一个数据库表,该表有一个 varchar 列,其中包含一对多 csv 格式的外键。这些外键对应于另一个实体类型的 ID。我一直在做的是编写一个函数,从该 csv 列表中创建一个 ID 列表,然后我通过 DBContect 对象搜索该实体。我想做的是映射实体之间的关系。有没有办法做到这一点?谢谢!

【问题讨论】:

【参考方案1】:

不幸的是,如果不更改数据库,就无法做到这一点。 EF 是 ORM 工具,但它仍然非常依赖于数据库设计的正确性。在单列中存储多个值是收支平衡first database normal form。对于 EF,您包含 csv 数据的列是单个字符串值,您不能对该值建立关系。

顺便说一句。它甚至更复杂,因为该列不能代表标准关系含义中的一对多关系 - 这将要求依赖实体包含您的主实体的 Id,而不是主实体包含所有依赖实体的 Id。

【讨论】:

以上是关于Entity Framework 4.1 Code First - 如何将包含实体 ID(外键)的 csv 的字符串映射到相应的实体的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework 4.1Code First 连接到 Sql Server 2005

Entity Framework 4.1 Code First 关系中的更改通常不需要

Entity Framework 4.1 Code First - 插入非主键时自动递增字段

我应该如何在 MVC3 中使用 Code First Entity Framework (4.1) 声明外键关系?

virtual 关键字在 Entity Framework 4.1 POCO Code First 中可以产生啥影响?

Entity Framework 4.1 Code First,一对一,一个表连接到复合键的单个键字段