【问题标题】:How do I change a foreign key association using Entity Framework?如何使用实体框架更改外键关联?
【发布时间】:2009-11-20 13:28:56
【问题描述】:

使用 ASP.NET Entity Framework,如何更改两个实体之间的外键关联?

这是一个示例场景:

---------------     ----------------
|  Customer   |     |     Class    |
---------------     ----------------
| ID          |     | Desctription |
| Name        |     | Name         |
| ClassID (FK)|-----| ID           |
---------------     ----------------

客户从 D 类客户开始。客户消费越多,分类将更改为 C、B 或 A。如何使用 EF 做到这一点?

我在 EF 和我的解决方案之间设置了一个门面(因为某些操作需要在 EF 之外进行操作),我尝试这样做:

customer.Context.Class.ID = facade.SelectClass(ClassID)

这会返回一个类的业务对象,但 customer.Context.Class.ID 想要一个数据层对象,虽然我可以这样做,但这意味着我脱离了设置层设计。

有没有办法解决这个问题?

对不起,如果问题有点混乱或模糊。

【问题讨论】:

    标签: c# asp.net entity-framework


    【解决方案1】:

    首先,让我们在没有多余层次的情况下回答这个问题。在直接 EF 中,您可能会这样做:

    var customer = Context.Customers.Where(c.Id == id).First();
    customer.Class = Context.Classes.Where(c.Id == classId).First();
    

    现在,您如何将其映射到您的业务对象?我无法在不查看代码的情况下调试您的代码,但是您需要在外观中公开一些将业务类型映射到数据层类型的功能。我用表达式来做这个,但是有很多解决方案。

    【讨论】:

    • 这并没有完全解决我的问题,但一路帮助。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    相关资源
    最近更新 更多