【问题标题】:EF4 Code First with existing DB and one to one/one to many on SAME typeEF4 Code First 与现有数据库和一对一/一对多的相同类型
【发布时间】:2012-11-10 04:36:53
【问题描述】:

经过无数小时后,我终于设法获得了流畅的 api 设置,以将我们现有的复杂 SQL DB 映射到 POCO 类。有一件事我没有开始工作,我想知道它是否不受支持。

阶级力量有:

List<Transaction> PowerTransactions;
Transaction LastPowerTransaction;
int PowerTransactionId;

事务是一对多的,其中事务表有一个指向 Power.PowerID 的 FK,可以正常工作。

Power 的列 PowerTransactionId 和 FK 指向事务表中的 TransactionId。

我在 fluent API 中设置:

Power 具有可选的 Last Transaction 和所需的 power

HasOptional(x => x.LastPowerTransaction).WithRequired(x => x.PowerLastPowerTransaction).Map(x =>     x.MapKey("PowerTransactionId"));

powers transactionId为123,选择功率时,powerID为1。lastPoteransaction我获得了使用ID 1而不是123的交易。

由于多对多从 PowerID=1 的 PowerTransaction 中选择 ..,因此一对一执行相同的操作,而不是从 PowerID=123 的 PowerTransaction 中选择 ..。

我在这里错过了什么?

【问题讨论】:

  • 您为什么不直接使用免费的 Entity Framework Power Tools 对数据库进行逆向工程?您将在 2 分钟内完成。

标签: entity-framework-4 code-first one-to-one


【解决方案1】:

神秘人的评论不是真正的答案,但使用提到的工具会导致正确的答案。 EF4 代码首先只与共享主键建立一对一的关系。尊敬的工程揭示了这一点,因为没有创建一对一。因此我的流畅映射是错误的。这是 EF4 代码中的一个限制,如果现有数据库不使用共享主键,则必须解决使用一对一作为“假”一对多的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多